c# - 如何检查当前代码是否为 "inside"锁?

标签 c#

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

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/

相关文章:

c# - Blazor:每次 for 循环旋转时组件不会更新

c# - 使用 ApplicationUser 插入依赖实体

c# - 以十六进制值表示的 int 枚举

c# - 应用程序无法加载。无法创建 Visual C# 2015 RC 编译器

c# - System.Text.Json 未序列化 List<T>

C# - 数字非常小的问题 - 双数据类型中的数字不足

c# - 从 OpenFileDialog 处理多个选定的文件

c# - 如何使用 C# 更改用户控件的 div 可见性

C# WinForms AnimateWindow 问题

c# - 验证 CSV 文件