void MethodA()
{
Monitor.Enter(this);
if(someCondition)
{
Monitor.Exit(this);
// This point
MethodB();
}
else
{
// Set some values only
Monitor.Exit(this);
}
}
如果我有上述方法,其可以在多线程调用:适当使用Monitor.Exit的
- 假定线程1处于
//This point
- 另一个线程进入
Monitor.Enter
而线程1仍在//This point
- 这会停止
MethodB
被执行吗?如果是的话,有没有办法让MethodB
执行。
我需要执行MethodB()
因为我不能等待MethodB
释放MethodA
之前完成之前释放MethodA
。另外,我无法在新线程中启动MethodB
。
如果发生异常锁永远不会被释放,只能在'try .. finally'中使用它 – Andrey 2010-11-03 16:37:06