同时读取/编辑文件

时间:2012-10-18 11:28:46

标签: .net concurrency io

我有一个平面文件数据库(一个xml文件)。我有一个客户端,可以读取和编辑这个数据库。我在一个目录中有xml文件,许多客户端连接到该目录。如果一个客户端进行编辑,则需要在所有客户端上进行更新。

我不能使用数据库,必须使用这种平面文件结构(即我不能一直运行管理服务器应用程序)

客户端正在运行XP和.NET

这个问题的现代解决方案是什么?我有一段时间没有做任何XP或.NET编码,简单地使用文件锁会很容易吗?你甚至在XP上有单独的读/写锁吗?

修改

客户端都在单独的计算机上,数据库存储在网络共享中。

1 个答案:

答案 0 :(得分:0)

您可以使用System.Threading.Mutex来处理对此文件的读取/编辑访问。在你操作这个平面文件或阅读它的类中,你应该写

yourMutex.WaitOne();
ReaderOrWrite();
yourMutex.ReleaseMutex();

你可以找到一个很好的示例代码here,它也可以在没有创建互斥锁的情况下处理这种情况。

Mutex是一种信号量,用于处理对关键区域的多次访问,在您的示例中为xml文件,并提供防止关键部分并发执行的解决方案。