public async Task Scheduler_WhenTaskExceptionOccurs_ShouldContinueToRun() { using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask(5, 1); scheduler.Configure(new[] { task }, CancellationToken.None); try { await task.Completion; } catch (OperationCanceledException) { Assert.False(true); } Assert.Equal(5, task.Counter); } }
public void ShouldContinueToRunEvenThoughExceptionsOccurs() { using (var reset = new ManualResetEventSlim(false)) using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask() { ExecutionDelay = TimeSpan.FromMilliseconds(10), ExecuteDuringStartup = false, Reset = reset, Interval = TimeSpan.FromMilliseconds(20), ThrowsExceptions = true }; scheduler.Configure(new List <IUnleashScheduledTask>() { task }, CancellationToken.None); reset.Wait(); task.Counter.Should().Be(5); } }
public void ShouldBeStoppedWhenCancelled() { using (var reset = new ManualResetEventSlim(false)) using (var cts = new CancellationTokenSource()) using (var scheduler = new SystemTimerScheduledTaskManager()) { cts.CancelAfter(75); var task = new TestBackgroundTask() { ExecutionDelay = TimeSpan.FromMilliseconds(10), Reset = reset, Interval = TimeSpan.FromMilliseconds(10), }; scheduler.Configure(new List <IUnleashScheduledTask>() { task }, cts.Token); reset.Wait(TimeSpan.FromMilliseconds(200)); task.Counter.Should().BeInRange(2, 4); } }