Use WaitHandle, such as ManualResetEvent (or AutoResetEvent ).
In your class, declare ManualResetEvent:
private ManualResetEvent myEvent = new ManualResetEvent(false);
Thread1:
while(true) { doSomething(); myEvent.WaitOne(5000); myEvent.Reset(); }
Thread 2:
myEvent.Set();
Thread1 will wait 5 seconds or until the ManualResetEvent parameter is set, whichever comes first.
EDIT : Added AutoResetEvent above
source share