I have a WaitHandle and I would like to know how to check if the WaitHandle has already been set or not.
Note: I can add a bool va开发者_JS百科riable and whenever Set() method is used set the variable to true, but this behaviour must be built in WaitHandle somewhere.
Thanks for help!
Try WaitHandle.WaitOne(0)
If millisecondsTimeout is zero, the method does not block. It tests the state of the wait handle and returns immediately.
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));
Output:
Is set:False
Is set:True
Use one of the Wait...
methods on WaitHandle
that takes a timeout value, such as WaitOne
, and pass a timeout of 0.
You can use the WaitOne(int millisecondsTimeout, bool exitContext) method and pass in 0 for the timespan. It will return right away.
bool isSet = yourWaitHandle.WaitOne(0, true);
精彩评论