/// <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); } } }
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 } }
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次 } }