public void AsyncTimer_CancelAll() { DateTime start = SysTime.Now; IAsyncResult ar1, ar2; ar1 = AsyncTimer.BeginTimer(TimeSpan.FromSeconds(20), null, null); ar2 = AsyncTimer.BeginTimer(TimeSpan.FromSeconds(30), null, null); Thread.Sleep(5000); AsyncTimer.CancelTimer(ar1); AsyncTimer.CancelTimer(ar2); try { AsyncTimer.EndTimer(ar1); Assert.Fail("Expected a CancelException"); AsyncTimer.EndTimer(ar2); Assert.Fail("Expected a CancelException"); } catch (CancelException) { } Assert.IsTrue(SysTime.Now >= start + TimeSpan.FromSeconds(5) - SysTime.Resolution); Assert.IsTrue(SysTime.Now <= start + TimeSpan.FromSeconds(6) - SysTime.Resolution); }