如何测试一个线程是否在C#中对某个对象进行锁定?

the*_*onk 12 .net c# multithreading locking

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

谢谢,

Jon*_*eet 14

我不相信有.你可以做一些粗暴的黑客攻击Monitor.Wait(monitor, 0)和捕捉SynchronizationLockException,但这非常可怕(理论上可以"捕获"另一个线程正在等待的脉冲).

我建议你尝试重新设计,这样你就不需要这个了,我很害怕.

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