如何检查WaitHandle是否已设置?

时间:2010-07-22 20:24:20

标签: c# waithandle

我有一个WaitHandle,我想知道如何检查WaitHandle是否已经设置。

注意:我可以添加bool变量,每当使用Set()方法时,将变量设置为true,但必须在WaitHandle的某处构建此行为。

感谢您的帮助!

4 个答案:

答案 0 :(得分:53)

尝试WaitHandle.WaitOne(0)

  

如果millisecondsTimeout为零,则该方法不会阻止。它测试等待句柄的状态并立即返回。

答案 1 :(得分:6)

const int DoNotWait = 0;

ManualResetEvent waitHandle = new ManualResetEvent(false);                   

Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));

waitHandle.Set(); 

Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));   

输出:

  

设置:False

     

设置为:

答案 2 :(得分:2)

使用WaitHandle上的Wait...方法之一获取超时值,例如WaitOne,并传递超时0。

答案 3 :(得分:1)

您可以使用WaitOne(int millisecondsTimeout, bool exitContext)方法并在时间跨度中传入0。它会马上回来。

bool isSet = yourWaitHandle.WaitOne(0, true);