在我的 .Net 应用程序中,我有一个地方声明ReaderWriterLockSlim
:
private readonly ReaderWriterLockSlim m_lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
在其他地方,我每 100 毫秒刷新一次值,所以基本上如果有一次,锁无法访问,这没什么大不了的,我只想退出并等待下一次调用。
所以我有以下方法的内容:
if (m_lock.TryEnterUpgradeableReadLock(0)){
..
}
在应用程序中,我目前遇到了死锁(这似乎与当前的问题无关),所以我暂停了我的应用程序以检查线程,我看到我目前有 20 多个线程被阻塞if 条件。
这很奇怪,因为文档对此非常清楚:
如果 millisecondsTimeout 为 0(零),则此方法检查锁定状态,如果所需状态不可用,则立即返回 false。
问题很简单。为什么YYYYYYYYYYYYYYYYYY?我试图在TryEnterUpgradeable
, 之后放置断点以继续,但这不起作用。