public void Wait_then_timeout() { MonitorSemaphore monitor = new MonitorSemaphore(); var timeout = monitor.Wait(TimeSpan.FromSeconds(0.1)); Assert.IsFalse(timeout, "timeout should have occurred"); }
public void Signal_then_wait() { MonitorSemaphore monitor = new MonitorSemaphore(); monitor.Signal(); var timeout = monitor.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(timeout, "timeout should not have occurred"); }
public void Wait_then_Signal() { MonitorSemaphore monitor = new MonitorSemaphore(); new Thread(() => { Thread.Sleep(100); monitor.Signal(); }).Start(); var timeout = monitor.Wait(TimeSpan.FromSeconds(3)); Assert.IsTrue(timeout, "timeout should not have occurred"); }
/// <summary> /// Waits for event to be signaled. /// </summary> /// <param name="monitor">Event to wait on.</param> /// <param name="timeout">Timeout period. Use <cref see="TimeSpan"/>.MaxValue for no timeout.</param> /// <returns>Returns true if the event was signaled before the timeout, false otherwise.</returns> public static bool WaitFor(MonitorSemaphore monitor, TimeSpan timeout) { DispatchThreadEvictWorkItems(); return(monitor.Wait(timeout)); }