Conditional event waiting / ManualResetEvent

1.5k Views Asked by At

I know how to use the ManualResetEvent or synchronization primitives (like Monitor) to wait for events and/or locks, but I am wondering if there is a way to implement something like the following:

ManualResetEvent resetEvent; 

public string WaitForOneThousandMs()
{
    resetEvent.Wait(1000);

    if (WaitTime(resetEvent) <= 1000)
        return "Event occured within 1000ms."; 
    else
        return "Event did not occur within 1000ms."; 
}

1) Wait for 1000ms for an event X to occur

2) If event occurs within 1000ms, execute path A

3) Otherwise, execute path B

This is basically a conditional waiting function where the condition is how long we had to wait, what would be the best way to implement it, if possible?

1

There are 1 best solutions below

1
On BEST ANSWER

It looks like you're after:

return resetEvent.WaitOne(1000) ? "Event occurred within 1000ms"
                                : "Event did not occur within 1000ms";

From the docs for WaitHandle.WaitOne:

Return value
true if the current instance receives a signal; otherwise, false.

Monitor.Wait returns a bool in a similar fashion.