public void ShouldInterruptJobOnRemoval() { // arrange var mark1 = new ManualResetEvent(false); var mark2 = new ManualResetEvent(false); var proceed = new ManualResetEvent(false); var trigger = new ManualTrigger(); var jobId = scheduler.AddAction(trigger, ctx => { mark1.Set(); proceed.WaitOne(); mark2.Set(); }); trigger.TriggerNow(); mark1.WaitOne(); // act scheduler.RemoveJob(jobId); proceed.Set(); // assert Assert.That(mark2.WaitOne(TimeSpan.FromSeconds(0.1)), Is.False, "Job should be interrupted"); }