我正在使用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)
}
这个类被许多其他类使用,有时它抛出System.IO异常,该文件已经被其他进程使用了,虽然我已经使用了lock语句
请指导。
答案 0 :(得分:2)
如果您需要在多个类的实例中保持安全,则需要创建私有锁定变量static
。
private static object lockObject = new object();
答案 1 :(得分:0)
删除对Lock的所有调用并尝试更改您的代码:
private void MyCommonMethod()
{
lock (this.lockObject)
{
var element = XElement.Load(path);
// some operations
element.save(path);
}
}