public void TerminateShouldStopManager() { using (PollingTaskManager pollingTaskManager = new PollingTaskManager(new BasePollingTask[0], TimeSpanOf25Milliseconds)) { pollingTaskManager.Start(); WaitForThrowOnTimeout(() => pollingTaskManager.PollCounter > 0, TimeSpanOf100Milliseconds); pollingTaskManager.Terminate(); Assert.That(pollingTaskManager.Status, Is.EqualTo(PollingTaskManagerStatus.Terminated)); long counter = pollingTaskManager.PollCounter; Assert.That(WaitFor(() => pollingTaskManager.PollCounter != counter, TimeSpanOf100Milliseconds), Is.False); } }
public void TerminateShouldForcibleyStopExecutingTasks() { NeverEndingPollingTask task = new NeverEndingPollingTask(); using (PollingTaskManager pollingTaskManager = new PollingTaskManager(new BasePollingTask[] { task }, TimeSpanOf25Milliseconds)) { pollingTaskManager.Start(); WaitForThrowOnTimeout(() => pollingTaskManager.PollCounter > 0, TimeSpanOf100Milliseconds); WaitForThrowOnTimeout(() => task.Counter > 0, TimeSpanOf100Milliseconds); Assert.That(pollingTaskManager.Stop(TimeSpanOf100Milliseconds), Is.False); Assert.That(task.IsStillAlive, Is.True); pollingTaskManager.Terminate(); Assert.That(task.IsStillAlive, Is.False); if (task.IsStillAlive) { task.TerminateTask(); } } }