有一段读xml的代码,但是会有几个Process同事操作,这样就会发生2个因为同时读到这个xml而发生错误。我已经加了一个锁了,在读xml之前先创建一个.lock的文件,其他Process如果读到这个.lock的文件,就先等待,但是这样,有时候还是会锁不住,有时2个Process还是会同时读到那个xml,有时2个Process还有可能因为同时创建了.lock而发生错误。(我也试过用一个静态的开关,去判断是否有Process正在读取xml,但是也还是会发生上述问题)有什么方法可以改进吗?或者还有没有其他的方法防止几个Process同时读取一个xml?
lock(*.Sync)
{
}
1楼的正解
Stream = File.Open(Path , FileMode.Open , FileAccess.Read , FileShare.None)
Xml.load(Stream)
//Processing.....
Stream.close();在Stream.CLose之前, 其它用户打开该文件都会失败.
Mutex m = new Mutex(false, "MyMutex");
记住"MyMutex"这个值一定要唯一的。不要用默认的构造函数生成实例,那个不是跨进程锁。
Try
{}
Catch{}
MSDN里有详细的使用说明
楼上的,人家是Process,不是Thread,
1楼的正解
=======================
Sorry,是我没认真看,是Process读文件。
Try
{}
Catch{}
MSDN里有详细的使用说明多谢,我基本上懂你的意思了^_^