using System; using System.Timers; namespace DRG.DRGInterfaceClient { /// hourly 调度:程序内整点轮询(常驻托盘时生效)。 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(); } } }