Beispiel #1
0
        public void Test_中止_轮循模式()
        {
            var flow = new JobManager();

            flow.Pool = new JobPool()
            {
                //关键属性:在组内整体轮循
                IsOverall = true
            };
            var job1 = new Job
            {
                IsLoop    = true,
                LoopCount = 500000,
                Interval  = 2,
                Timeout   = 15,
                Run       = CountFunc014_1
            };
            var job2 = new Job
            {
                IsLoop    = true,
                LoopCount = 500000,
                Interval  = 2,
                Timeout   = 15,
                Run       = CountFunc014_2
            };

            flow.Pool.AddRange(new IJobPoolItem[] { job1, job2 });
            Task.Factory.StartNew(() => flow.Run());
            Thread.Sleep(5);
            flow.Break();

            _number014_1.Should().BeLessThan(job1.LoopCount).And.BeGreaterThan(0);
            _number014_2.Should().BeLessThan(job2.LoopCount).And.BeGreaterThan(0);
        }
Beispiel #2
0
 private bool OnBreakCountFunc(IJob job)
 {
     _number++;
     if (_number >= 100)
     {
         _runTest005Manager.Break();
     }
     return(true);
 }
Beispiel #3
0
        public void Test_暂停与继续功能_设置1个循环20次的工作_当完成到5次时暂停_测试是否真正暂停()
        {
            _count006A = 0;
            var job = new Job
            {
                IsLoop    = true,
                LoopCount = 20,
                Interval  = 2,
                Timeout   = 5,
                Run       = OnPauseCountFuncA
            };

            _runTest006AManager.Pool = new JobPool();
            _runTest006AManager.Pool.Add(job);
            //另起一个线程执行,当执行计数到5的时候,暂停
            Task.Factory.StartNew(() => _runTest006AManager.Run());
            //如果暂停成功,计数器计数应该是5,而无论再等待多少时间
            Thread.Sleep(100);
            //断言测试计数器
            _count006A.Should().Be(5);

            _runTest006AManager.Resume();
            _runTest006AManager.Break();
        }
Beispiel #4
0
 /// <summary>
 ///     中断正在进行的发送接线过程,无论是异步与同步。
 /// </summary>
 public override void Break()
 {
     JobManager.Break();
 }