Example #1
0
        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");
        }