c# - 如何知道谁拥有 ReaderWriterLockSlim?

标签 c# .net multithreading deadlock readerwriterlockslim

我正在编写一个广泛使用多线程的应用程序。一些线程使用 ReaderWriterLockSlim 共享一个 observablecollection。

我有时会遇到死锁,我需要知道在死锁发生时哪个线程持有锁。我怎么知道这个?我查看了对象属性,但没有发现任何明显的东西。目前我所知道的是哪些线程正在等待锁。

感谢您的帮助!

编辑:当然,我说的是在调试时使用所有可用的调试信息找到它。

最佳答案

在死锁期间,只需查看线程调试面板中的当前线程,查看调用堆栈,您就会发现哪个线程获得了锁。

如果你需要知道你的代码中的线程id,你总是可以静态保存它,或者继承readerwriterlockslim并添加一个线程属性。

关于c# - 如何知道谁拥有 ReaderWriterLockSlim?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727243/

相关文章:

.net - 复制本地和系统 dll - 有什么意义?

python - 使用 Tkinter 扫描线程违规

c++ - OpenCL "multithreading"示例

c# - 多个线程向一个列表添加元素。为什么列表中的项目总是比预期的少?

c# - 如何从序列中间切掉一些元素?

c# - 在 DataGridView 中读取 CSV 文件

.net - 你能将 return 转入 IList<T> 吗?

c# - 为什么等待这个错误任务不抛出异常?

c# - 将数据从 Controller 发送到 View 的最安全、最干净的方法是什么?

c# - 如何在 case 语句中使用范围 C#