ASP.NET - 写入同一文件的不同线程导致问题

时间:2009-11-03 09:23:26

标签: c# asp.net locking

我有一个执行删除和创建文件的方法。所有线程都试图同时访问该文件存在问题。

如何限制对文件的访问?

public static Save(string file)
{
  //1.Perform Delete
  //2.Perform Write 
}

请注意,该方法是静态的,因此可以在静态方法中锁定进程吗?

干杯

3 个答案:

答案 0 :(得分:6)

private static readonly object _syncRoot = new object();
public static void Save(string file)
{
    lock(_syncRoot) {
        //1.Perform Delete
        //2.Perform Write 
    }
}

或者您可以使用MethodImplAttribute在整个方法体中放置lock

[MethodImpl(MethodImplOptions.Synchronized)]
public static void Save(string file)
{
    //1.Perform Delete
    //2.Perform Write 
}

答案 1 :(得分:0)

您必须对静态对象使用锁定。

private static Object saveLock = new Object();

public static Save(string file)
{
   lock (saveLock )
   {
     //...
   }
}

答案 2 :(得分:0)

请查看此thread,其中讨论了lock语句的使用。