| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using System;
- using System.Timers;
- namespace DRG.DRGInterfaceClient
- {
- /// <summary>hourly 调度:程序内整点轮询(常驻托盘时生效)。</summary>
- internal class SchedulerService
- {
- private Timer _timer;
- private DateTime _lastRun = DateTime.MinValue;
- private MainForm _form;
- public bool IsRunning { get; private set; }
- public string NextRunText { get; internal set; }
- public string Description { get; internal set; }
- public SchedulerService(MainForm form) { _form = form; }
- public void StartHourly()
- {
- if (_timer != null) Stop();
- _timer = new Timer(60 * 1000); // 每分钟检查一次
- _timer.Elapsed += OnTick;
- _timer.AutoReset = true;
- IsRunning = true;
- _timer.Start();
- Logger.Info("hourly 内部整点轮询已启动");
- }
- private void OnTick(object sender, ElapsedEventArgs e)
- {
- if (DateTime.Now.Minute != 0) return; // 仅整点
- if ((DateTime.Now - _lastRun).TotalMinutes < 55) return; // 同一小时不重复
- _lastRun = DateTime.Now;
- try { _form.TriggerSync(); }
- catch (Exception ex) { Logger.Error("hourly 触发同步异常", ex); }
- }
- public void Stop()
- {
- IsRunning = false;
- if (_timer != null) { _timer.Stop(); _timer.Dispose(); _timer = null; }
- Logger.Info("内部轮询已停止");
- }
- internal void Start(SyncConfig syncConfig)
- {
- throw new NotImplementedException();
- }
- }
- }
|