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

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

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

最佳答案

尝试Monitor类:

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

由于(请参见下面的RenéVogt评论)lock
 lock(MyLock) {
   ...
 }

实际上是
 Monitor.Enter(MyLock);

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

关于c# - 如何检查当前代码是否为 "inside"锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38746622/

10-10 10:58