Reputation: 28648
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 variable and whenever Set() method is used set the variable to true, but this behaviour must be built in WaitHandle somewhere.
Thanks for help!
Upvotes: 45
Views: 21888
Reputation: 49978
If millisecondsTimeout is zero, the method does not block. It tests the state of the wait handle and returns immediately.
Upvotes: 63
Reputation: 38434
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
Upvotes: 7
Reputation: 62367
Use one of the Wait...
methods on WaitHandle
that takes a timeout value, such as WaitOne
, and pass a timeout of 0.
Upvotes: 2
Reputation: 55720
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);
Upvotes: 1