如何检查当前代码是否“内部”锁定?

时间:2016-08-03 14:35:32

标签: c#

我有一些代码可以从锁外部的内部调用。在锁内时我需要做东西。代码本身不知道从哪里调用它。所以,我需要这样的东西:

lock (MyLock) {
    if (INSIDE_LOCK) ...
}

我知道这听起来很奇怪和错误,但我需要这个兼容性问题。否则我将不得不重写大量代码,因为我没有测试会有风险。

1 个答案:

答案 0 :(得分:7)

尝试Monitor课程:

 if (Monitor.IsEntered(MyLock)) {...}

以后(参见下面的RenéVogt评论)lock

 lock(MyLock) {
   ...
 }

实际上是

的语法糖
 Monitor.Enter(MyLock);

 try {
   ... 
 }  
 finally {
   Monitor.Leave(MyLock);
 }