예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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("----- 服务启动完成 -----");
            }
        }