public void Monitor_WaitTest() { var obj = new object(); var waitTests = new Func <bool>[] { () => Monitor.Wait(obj, FailTimeoutMilliseconds), () => Monitor.Wait(obj, FailTimeoutMilliseconds), () => Monitor.Wait(obj, TimeSpan.FromMilliseconds(FailTimeoutMilliseconds)), () => Monitor.Wait(obj, TimeSpan.FromMilliseconds(FailTimeoutMilliseconds)), }; var t = new Thread(() => { Monitor.Enter(obj); for (int i = 0; i < waitTests.Length; ++i) { Monitor.Pulse(obj); Monitor.Wait(obj, FailTimeoutMilliseconds); } Monitor.Exit(obj); }); t.IsBackground = true; Monitor.Enter(obj); t.Start(); foreach (var waitTest in waitTests) { Assert.IsTrue(waitTest()); Monitor.Pulse(obj); } Monitor.Exit(obj); }
public void Monitor_Pulse_Invalid() { var obj = new object(); AssertExtensions.Throws <ArgumentNullException>("obj", () => Monitor.Pulse(null)); }