c# - 如何测试线程是否持有 C# 中的对象锁?

标签 c# .net multithreading locking

有没有办法测试当前线程是否持有对象的监视器锁? IE。相当于 Java 中的 Thread.holdsLock。

谢谢,

最佳答案

我不相信有。你可以做一些很糟糕的事情,比如调用 Monitor.Wait(monitor, 0) 并捕获 SynchronizationLockException,但这非常可怕(理论上可以“捕获”一个脉冲另一个线程正在等待)。

恐怕我建议您尝试重新设计,这样您就不需要它了。

编辑:在 .NET 4.5 中,这可用于 Monitor.IsEntered .

关于c# - 如何测试线程是否持有 C# 中的对象锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2407943/

相关文章:

c# - 将 wpf 进度条与库中的函数同步的正确方法

c# - 线程卡住主 UI

.net - 在没有 Visual Studio 2010 的情况下安装 MSBuild 4.0

python - 为什么这个多线程代码会超出它的 while 条件?

c# - 连接丢失后自动重新连接到 MySql

c#命名管道双向通信

c# - .Net 桌面应用程序和 Web 应用程序之间的技术区别是什么?

c++ - gcc 支持 set_value_at_thread_exit() 吗?

c# - 当线程已经终止(.NET 5/Core)时,Thread.Join 方法并不总是返回相同的值

c# - 具有自定义和默认先决条件的 Clickonce WPF 应用程序