如何查找 ManualResetEvent 的状态?

我使用 ManualResetEvent的一个实例来控制对资源的线程访问,但是我遇到了问题。有人知道我如何在调试过程中找出对象的状态吗?

也就是说,我想知道 ManualResetEvent当前是否阻塞了任何线程,甚至是阻塞了多少线程以及阻塞了哪些线程。

21686 次浏览

对超时值为零的事件执行 WaitOne

如果设置了事件,则返回 true; 如果发生超时,则返回 false。 换句话说,设置了 true-> event,但没有设置 false-> event。

下面是工作代码:

private ManualResetEvent pause = new ManualResetEvent(false);
pause.WaitOne(); // caller thread pauses
pause.Set();    // another thread releases paused thread


// Check pause state
public bool IsPaused { get { return !pause.WaitOne(0); } }

可以在“调试器监视”窗口中进行函数调用。 在“监视”窗口中添加对 mreVariable.WaitOne(0)的调用,并查看其计算结果。 注意: 您不应该在 AutoResetEvents 中使用此选项,因为它可能会改变实际状态。