Apache.NMS.ActiveMQ.Threads.DedicatedTaskRunner.Shutdown C# (CSharp) Метод

Shutdown() публичный Метод

public Shutdown ( System.TimeSpan timeout ) : void
timeout System.TimeSpan
Результат void
        public void Shutdown(TimeSpan timeout)
        {
            lock(mutex)
            {
                this.shutdown = true;
                this.pending = true;

                Monitor.PulseAll(this.mutex);

                // Wait till the thread stops ( no need to wait if shutdown
                // is called from thread that is shutting down)
                if(Thread.CurrentThread != this.theThread && !this.terminated)
                {
                    Monitor.Wait(this.mutex, timeout);
                }
            }
        }

Same methods

DedicatedTaskRunner::Shutdown ( ) : void

Usage Example

        public void TestSimple()
        {
            try
            {
                new DedicatedTaskRunner(null);
                Assert.Fail("Should throw a NullReferenceException");
            }
            catch
            {
            }

            SimpleCountingTask simpleTask = new SimpleCountingTask();
            Assert.IsTrue( simpleTask.Count == 0 );
            DedicatedTaskRunner simpleTaskRunner = new DedicatedTaskRunner(simpleTask);

            simpleTaskRunner.Wakeup();
            Thread.Sleep( 500 );
            Assert.IsTrue( simpleTask.Count >= 1 );
            simpleTaskRunner.Wakeup();
            Thread.Sleep( 500 );
            Assert.IsTrue( simpleTask.Count >= 2 );

            InfiniteCountingTask infiniteTask = new InfiniteCountingTask();
            Assert.IsTrue( infiniteTask.Count == 0 );
            DedicatedTaskRunner infiniteTaskRunner = new DedicatedTaskRunner(infiniteTask);
            Thread.Sleep( 500 );
            Assert.IsTrue( infiniteTask.Count != 0 );
            infiniteTaskRunner.Shutdown();
            uint count = infiniteTask.Count;
            Thread.Sleep( 500 );
            Assert.IsTrue( infiniteTask.Count == count );
        }