我有一些代码可以从锁内部或外部调用.在锁内时我需要做东西.代码本身不知道从哪里调用它.所以,我需要这样的东西:
lock (MyLock) {
if (INSIDE_LOCK) ...
}
Run Code Online (Sandbox Code Playgroud)
我知道这听起来很奇怪和错误,但我需要这个兼容性问题.否则我将不得不重写很多代码,因为我没有测试会有风险.
尝试Monitor上课:
if (Monitor.IsEntered(MyLock)) {...}
Run Code Online (Sandbox Code Playgroud)
从那以后(见下面的RenéVogt评论) lock
lock(MyLock) {
...
}
Run Code Online (Sandbox Code Playgroud)
实际上是一种语法糖
Monitor.Enter(MyLock);
try {
...
}
finally {
Monitor.Leave(MyLock);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |