示例#1
0
        private IEnumerator <Task> AcquireOneInterrupted(Process p, object data)
        {
            IResource r = (IResource)data;
            Task      t = new InterruptTask(p.Simulation);

            p.WaitOnTask(t, t.Priority + 10);
            Assert.AreEqual(1, t.BlockCount);

            yield return(r.Acquire(p));

            // The InterruptTask should interrupt us here.
            Assert.IsTrue(p.Interrupted);
            yield return(p.Delay(3));

            // After a delay, the interrupt flag should be cleared.
            Assert.IsTrue(!p.Interrupted);
            yield break;
        }