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