コード例 #1
0
        public void AbortTest()
        {
            var process = new MockThreadedBeginStopWithSleepingThreadProcess();
            var target = new ThreadedProcess_Accessor(new PrivateObject(process));

            target.Start();

            Assert.AreEqual(ProcessExecutionState.Running, process.ExecutionState);

            target.Abort();

            Assert.AreEqual(ProcessExecutionState.Terminated, process.ExecutionState);
            Assert.AreEqual(ThreadState.Stopped, target.WorkingThread.ThreadState);
        }
コード例 #2
0
        public void BeginStopTest()
        {
            var process = new MockThreadedBeginStopWithSleepingThreadProcess();
            var target = new ThreadedProcess_Accessor(new PrivateObject(process));

            var state = new MockAsyncState {TestField = "TestFieldValue"};

            target.Start();

            IAsyncResult ar = target.BeginStop(state, StopCallback);

            if (!ar.AsyncWaitHandle.WaitOne(20000))
            {
                Assert.IsTrue(false, "The time given to the process to stop has been exceeded!");
            }

            Assert.IsTrue(ar.IsCompleted);
            Assert.IsTrue(process.ThreadWasInterrupted, "Thread should have been interrupted from its WaitSleepJoin state!");
            beginStopCallbackHandle.WaitOne();
            Assert.IsTrue(beginStopCallbackCalled, "The BeginStopCallback should have been called!");
        }