public void Pause_PausesWaitingTasks() { long[] token = { 0 }; using (var controller = new ThreadController()) { controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Start(); controller.Pause(); Thread.Sleep(100); Assert.That(Interlocked.Read(ref token[0]), Is.EqualTo(0)); controller.Stop(); } }
public void Pause_PausesWaitingTasks() { long[] token = { 0 }; using(var controller = new ThreadController()) { controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); }); controller.Start(); controller.Pause(); Thread.Sleep(100); Assert.That(Interlocked.Read(ref token[0]), Is.EqualTo(0)); controller.Stop(); } }
public void Wait_OnNonTaskThread_BlocksForActivity() { var fail = true; using (var controller = new ThreadController()) { controller.Start(); controller.Pause(); Action func = () => { controller.Wait(TimeSpan.FromMilliseconds(50)); fail = true; }; fail = false; var result = func.BeginInvoke(null, null); controller.Stop(); result.AsyncWaitHandle.WaitOne(); Assert.That(fail, Is.False, "Task did not wait properly."); } }
public void Wait_OnNonTaskThread_BlocksForActivity() { var fail = true; using(var controller = new ThreadController()) { controller.Start(); controller.Pause(); Action func = () => { controller.Wait(TimeSpan.FromMilliseconds(50)); fail = true; }; fail = false; var result = func.BeginInvoke(null, null); controller.Stop(); result.AsyncWaitHandle.WaitOne(); Assert.That(fail, Is.False, "Task did not wait properly."); } }
/// <summary> /// Pauses schedule polling. /// </summary> public void Pause() { _controller.Pause(); }