我有一节课使用这三种方法。这个类被许多线程使用。 如果 Method2 和/或 Method3 在任何线程中运行,我希望 Method1 等待。 有什么建议吗?
public class Class1
{
public static void Method1()
{
Object lockThis = new Object();
lock (lockThis)
{
//Body function
}
}
public static void Method2()
{
//Body function
}
public static void Method3()
{
//Body function
}
}
最佳答案
如果我没理解错的话,你需要这样的东西:
static object lockMethod2 = new object();
static object lockMethod3 = new object();
public static void Method1()
{
lock (lockMethod2)
lock (lockMethod3)
{
//Body function
}
}
public static void Method2()
{
lock (lockMethod2)
{
//Body function
}
}
public static void Method3()
{
lock (lockMethod3)
{
//Body function
}
}
这允许方法 3 在方法 2 正在运行时执行,反之亦然,而方法 1 必须等待两者。当然,method2 和 3 不会在 1 运行时运行。
关于c# - c#中的方法锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977106/