예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="intervalMilliseconds">检测信号的时间间隔</param>
 /// <param name="sleep">发出信号的线程等待时间</param>
 private void _Detected(int intervalMilliseconds, int sleep)
 {
     using (var signal = new RepeatedDetector(() =>
     {
         Assert.Fail("信号中断");
     }, intervalMilliseconds))
     {
         for (var i = 0; i < 5; i++)
         {
             signal.Receive();
             Thread.Sleep(sleep);
         }
     }
 }
예제 #2
0
        public void RepeatedDetected()
        {
            var intervalMilliseconds = 10;
            var sleep  = intervalMilliseconds * 5;
            int _count = 0;

            using (var signal = new RepeatedDetector(() =>
            {
                Interlocked.Increment(ref _count);
            }, intervalMilliseconds, false))
            {
                signal.Receive();
                Thread.Sleep(sleep);
                Assert.IsTrue(_count > 1); //信号中断后,会重复,所以大于1
            }
        }
예제 #3
0
        public void NotDetected()
        {
            var intervalMilliseconds = 10;
            var sleep  = intervalMilliseconds * 3;
            int _count = 0;

            using (var signal = new RepeatedDetector(() =>
            {
                Interlocked.Increment(ref _count);
            }, intervalMilliseconds))
            {
                signal.Receive();
                Thread.Sleep(sleep);
                Assert.AreEqual(1, _count); //信号中断后,不再探测,所以就1次
            }
        }