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

问题描述 投票:0回答:1

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

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

我知道这听起来很奇怪而且错误,但我需要这个来解决兼容性问题。否则我将不得不重写很多代码,这将是有风险的,因为我没有测试。

c# locking
1个回答
8
投票
尝试

Monitor

课程:

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

自从(参见下面的 René Vogt 评论)

lock

 

lock(MyLock) { ... }

实际上是

的语法糖

Monitor.Enter(MyLock); try { ... } finally { Monitor.Leave(MyLock); }
    
© www.soinside.com 2019 - 2024. All rights reserved.