/// <summary> /// 执行任务 /// </summary> private void Run() { int i = 0; int interval; while (true) { i++; //_logger.I(string.Format("{0} 开始第 {1} 次执行任务。", _mc.Name, i)); try { var watcher = new Stopwatch(); watcher.Start(); _mission.Action(); watcher.Stop(); //_logger.I(string.Format("{0} 第 {1} 次执行任务完毕,耗时 {2} 毫秒。", _mc.Name, i, // watcher.ElapsedMilliseconds)); } catch (Exception e) { //_logger.E(string.Format("{0} 任务执行出错 {1}。{2}", _mc.Name, this, e.Message)); } interval = _mc.Interval * 60 * 1000; //每日 18点到次日6点之间等待时间延长至5倍 if ((DateTime.Now.Hour < 6) || (DateTime.Now.Hour > 18)) { if (_mc.Interval >= 5) { interval *= 5; } } if (_autoEvent.WaitOne(interval)) { //_logger.I(string.Format("{0} 任务执行了 {1} 次后被取消。", _mc.Name, i)); break; } } _autoEvent.Close(); _autoEvent = null; }