我有一些代码可以从锁外部的或内部调用。在锁内时我需要做东西。代码本身不知道从哪里调用它。所以,我需要这样的东西:
lock (MyLock) {
if (INSIDE_LOCK) ...
}
我知道这听起来很奇怪和错误,但我需要这个兼容性问题。否则我将不得不重写大量代码,因为我没有测试会有风险。
答案 0 :(得分:7)
尝试Monitor
课程:
if (Monitor.IsEntered(MyLock)) {...}
以后(参见下面的RenéVogt评论)lock
lock(MyLock) {
...
}
实际上是
的语法糖 Monitor.Enter(MyLock);
try {
...
}
finally {
Monitor.Leave(MyLock);
}