【发布时间】:2010-09-18 18:29:17
【问题描述】:
在我的应用程序 (c# 3.5) 中,有各种进程非常频繁地访问单个 xml 文件(读取和写入)。访问该文件的代码被放置在一个被许多其他应用程序引用的程序集中。例如,Windows 服务可能会实例化 MyFileReaderWriter 类(位于前面提到的程序集中)并使用此类的读/写方法。
我正在寻找以最少锁定量读取和创建/附加文件的最佳/最快方式。缓存文件数据并定期刷新新内容不是一种选择,因为数据很关键。
我忘了提到我目前使用 XDocument(LInq2Xml 基础架构)来读取/写入文件的内容。
【问题讨论】:
-
几天前我遇到了类似的“情况”,期待一些答案:)
-
想想,这不是说编程设计问题吗?即使实际的磁盘 IO 没有问题,风险是一个线程获得文件锁定,读取,执行其他操作,然后返回,写入结果并释放锁定。同时,所有其他线程都被阻塞。
-
您是否有不能使用数据库的原因?
-
@biozinc:将有多个进程访问该文件,但一个进程中不会有多个线程。就我而言,这使它不是多线程问题,而是“控制文件访问”问题。
-
@NM:是的,不幸的是,我不能使用数据库的原因有很多。它必须是一个 xml 文件。