我正在使用 XML 文件来存储值。可以通过多种方法访问此 XML 文件。
Private object lockObject = new object()
Method1
{
Lock(this.lockObject)
{
MyCommonMethod()
}
}
Timer.ElapseEvent
{
Lock(this.lockObject)
{
MyCommonMethod()
}
}
MyCommonMethod()
{
// Read/Write to XML file.
var element = XElement.Load(path);
// some operations
element.save(path)
}
现在,此类被多个项目(服务)使用,这些项目又组合成一个项目。
我可以在类中使用 STATIC 锁对象吗?它在不同进程的情况下是否有效?
因此,他们有可能同时使用该文件,有时它会给我一个错误,即不同的线程拥有该文件,尽管我保留了锁定。
在这种情况下最好的解决方案是什么? 请指导。
这个链接怎么样...
Is there a way to check if a file is in use?
这是最好的方法还是我应该使用互斥体?
请指导..
最佳答案
看起来这不是“不同的应用程序域”问题,而是“不同的进程”问题。无论如何,您可以应用严格的同步解决方案,例如 mutex :
mutex.WaitOne();
MyCommonMethod();
mutex.ReleaseMutex();
此外,如果您使用的是 C# 4.0,则可以使用 Memory-Mapped I/O为此目的。
关于c# - 跨多个应用程序域使用文件时读取\写入文件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039108/