/// <summary> /// 发生配置变化后约30秒延迟时间才会全部重启完成。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void TaskConfigChanged(object sender, FileSystemEventArgs e) { try { //Note:线程锁定 lock (this) { _log.Info($"■■■■■■ 文件{e.Name}发生变化。变化类型:{e.ChangeType} ■■■■■■"); _watcher.Stop(); //原任务全部移除 foreach (var task in Tasks) { task.ChangeStatus(TaskRunStatusType.Removing); } TryRemoveTask(); TaskSetting = TaskConfig.GetInstance(true); TaskSetting.Changed += TaskConfigChanged; //只保留一次的事件 //Note:初始化计时器 //_watcher = new Timer(cfg.WatchTimer.DelayMillisecond); //Note:第一次运行不按间隔时间执行。 _watcher.Interval = ((TimeSpan)TaskSetting.WatchTimer.WorkingInterval).TotalMilliseconds; _watcher.Start(); //启动工作回调 _log.Info($"■■■■■■ 更新配置后的工作间隔为{TimeSpan.FromMilliseconds(_watcher.Interval)}后 ■■■■■■"); } } catch (Exception ex) { _log.Debug("重载任务配置发生异常", ex); throw; } }
/// <summary> /// 开始执行全部。 /// </summary> public void Start() { //Note:线程锁定 lock (this) { _log.DebugFormat("----- 服务启动开始 -----"); //初始化任务集合 Tasks = new List <TaskProvider>(); //载入所有配置 TaskSetting = TaskConfig.GetInstance(); TaskSetting.Changed += TaskConfigChanged; //只保留一次的事件 //Note:初始化计时器 _watcher = new Timer(TaskSetting.WatchTimer.DelayMillisecond); //Note:第一次运行不按间隔时间执行。 _watcher.Elapsed += Working; _watcher.Start(); //启动工作回调 _log.Debug($"监视工人第一次工作将于{TimeSpan.FromMilliseconds(_watcher.Interval)}后执行"); _log.Debug("----- 服务启动完成 -----"); } }