Best method to "block" until certain condition is met

lysergic-acid picture lysergic-acid · Jan 7, 2012 · Viewed 8.2k times · Source

I would like to create some method to be used in a generic way, were it would block (unless a certain timeout expires) until a given condition is met.

The usage in code would be something similar to:

WaitUntil( condition );

I have tried implementing it using a While ( .. ) loop, however this seems like a waste.

In current implementation, i am initializing a 'one-off' timer that expires at TIMEOUT. I am running a while loop, and checking if the timer has timed out or not, throwing an exception if it did.

Are there any simple yet effective techniques for implementing such a method ?

Answer

diggingforfire picture diggingforfire · Jan 7, 2012

Have a look at Albahari's threading article, especially the basic synchronization part and the ManualResetEvent and AutoResetEvent. This will give you a good idea about signalling constructs in .NET.