如何找到ManualResetEvent的状态?

时间:2008-12-23 15:43:03

标签: .net multithreading locking

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

也就是说我想知道ManualResetEvent当前是否阻止了任何线程,甚至可能阻塞了多少线程以及它阻塞的线程。

3 个答案:

答案 0 :(得分:83)

对事件执行WaitOne,超时值为零。

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

答案 1 :(得分:5)

这是工作代码:

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); } }

答案 2 :(得分:1)

您可以在“调试器监视”窗口中进行函数调用。 在“监视”窗口中向x = [df.to_dict()] #create a list x whose content is the dictionary of you dataframe 添加呼叫,然后查看其评估结果。 注意:请勿将其用于AutoResetEvents,因为这可能会更改实际状态。