コード例 #1
0
        public void Pause_PausesWaitingTasks()
        {
            long[] token = { 0 };
            using (var controller = new ThreadController())
            {
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });

                controller.Start();
                controller.Pause();

                Thread.Sleep(100);
                Assert.That(Interlocked.Read(ref token[0]), Is.EqualTo(0));

                controller.Stop();
            }
        }
コード例 #2
0
        public void Pause_PausesWaitingTasks()
        {
            long[] token = { 0 };
            using(var controller = new ThreadController())
            {
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });
                controller.Add(c => { Thread.Sleep(50); c.Wait(); Interlocked.Increment(ref token[0]); });

                controller.Start();
                controller.Pause();

                Thread.Sleep(100);
                Assert.That(Interlocked.Read(ref token[0]), Is.EqualTo(0));

                controller.Stop();
            }
        }
コード例 #3
0
        public void Wait_OnNonTaskThread_BlocksForActivity()
        {
            var fail = true;

            using (var controller = new ThreadController())
            {
                controller.Start();
                controller.Pause();

                Action func = () =>
                {
                    controller.Wait(TimeSpan.FromMilliseconds(50));
                    fail = true;
                };

                fail = false;
                var result = func.BeginInvoke(null, null);
                controller.Stop();
                result.AsyncWaitHandle.WaitOne();

                Assert.That(fail, Is.False, "Task did not wait properly.");
            }
        }
コード例 #4
0
        public void Wait_OnNonTaskThread_BlocksForActivity()
        {
            var fail = true;
            using(var controller = new ThreadController())
            {
                controller.Start();
                controller.Pause();

                Action func = () =>
                {
                    controller.Wait(TimeSpan.FromMilliseconds(50));
                    fail = true;
                };

                fail = false;
                var result = func.BeginInvoke(null, null);
                controller.Stop();
                result.AsyncWaitHandle.WaitOne();

                Assert.That(fail, Is.False, "Task did not wait properly.");
            }
        }
コード例 #5
0
 /// <summary>
 /// Pauses schedule polling.
 /// </summary>
 public void Pause()
 {
     _controller.Pause();
 }