75

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

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

4

3 回答 3

97

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

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

于 2008-12-23T15:52:00.303 回答
6

这是工作代码:

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); } }
于 2011-08-07T19:35:13.747 回答
1

您可以在 Debugger Watch 窗口中进行函数调用。在 Watch 窗口中添加一个调用mreVariable.WaitOne(0)并查看它的计算结果。注意:您不应将其用于 AutoResetEvents,因为这可能会改变实际状态。

于 2020-09-05T22:58:52.917 回答