コード例 #1
0
        public void TestAddWorkListToDisposedWorker()
        {
            WaitAndContinueWorker work = new WaitAndContinueWorker();
            work.Complete(false, 100);
            work.Dispose();

            WaitAndContinueList list = new WaitAndContinueList();
            list.AddWork(new SampleWork());

            work.AddWork(list);
        }
コード例 #2
0
        public void TestAddWorkToDisposedWorker()
        {
            WaitAndContinueWorker work = new WaitAndContinueWorker();
            work.Complete(false, 100);
            work.Dispose();

            SampleWork item = new SampleWork();
            work.AddWork(item);
        }
コード例 #3
0
        public void TestWorkerException()
        {
            using (WaitAndContinueWorker work = new WaitAndContinueWorker())
            {
                SampleWork item = new SampleWork();
                item.WorkThrows = true;
                work.AddWork(item);

                ManualResetEvent mreError = new ManualResetEvent(false);
                Exception error = null;
                work.OnError += delegate(object o, ErrorEventArgs e) { error = e.GetException(); mreError.Set(); };

                item.Ready.Set();
                Assert.IsTrue(mreError.WaitOne(1000, false));
                Assert.IsTrue(error is ArgumentOutOfRangeException);
                Assert.IsTrue(((ArgumentOutOfRangeException)error).ParamName == "WorkThrows");
            }
        }
コード例 #4
0
        public void TestHardAbort()
        {
            using (WaitAndContinueWorker work = new WaitAndContinueWorker())
            {
                work.OnError += delegate(object o, ErrorEventArgs e) { throw new Exception("Failed.", e.GetException()); };

                SampleWork item = new SampleWork();
                item.SleepForever = true;
                work.AddWork(item);

                item.Ready.Set();
                Assert.IsTrue(item.Sleeping.WaitOne(1000, false));
                work.Abort();

                Assert.IsFalse(item.Completed);
                Assert.IsTrue(item.Disposed);
            }
        }
コード例 #5
0
        public void TestAbortWork()
        {
            using (WaitAndContinueWorker work = new WaitAndContinueWorker())
            {
                work.OnError += delegate(object o, ErrorEventArgs e) { throw new Exception("Failed.", e.GetException()); };

                SampleWork item = new SampleWork();
                work.AddWork(item);

                Assert.IsFalse(work.IsEmpty);
                work.Abort();

                Assert.IsFalse(item.Completed);
                Assert.IsTrue(item.Disposed);
            }
        }
コード例 #6
0
        public void TestWaitAndContinueWorker()
        {
            WaitAndContinueWorker work;
            using (work = new WaitAndContinueWorker())
            {
                work.OnError += delegate(object o, ErrorEventArgs e) { throw new Exception("Failed.", e.GetException()); };

                SampleWork item = new SampleWork();
                work.AddWork(item);

                Assert.IsFalse(work.IsEmpty);

                item.Ready.Set();
                Assert.IsTrue(item.CompletedEvent.WaitOne(100, false));
                Assert.IsTrue(item.Completed);
                Assert.IsFalse(item.Cancelled);

                while (!item.Disposed)
                    Thread.Sleep(0);

                Assert.IsTrue(item.Disposed);
                Assert.IsTrue(work.IsEmpty);
            }
            Assert.IsTrue(work.IsEmpty);
        }