我有一个执行删除和创建文件的方法。所有线程都试图同时访问该文件存在问题。
如何限制对文件的访问?
public static Save(string file)
{
//1.Perform Delete
//2.Perform Write
}
请注意,该方法是静态的,因此可以在静态方法中锁定进程吗?
干杯
答案 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
语句的使用。