监视windows服务中的计时器

本文关键字:计时器 服务 windows 监视 | 更新日期: 2023-09-27 18:18:51

我在我的windows服务中有以下代码

  var timeToWait = TimeSpan.FromSeconds(20);
        var interval = TimeSpan.FromMinutes(5);
        var t = new Timer((s) =>
            {
                tracker.ProcessAuditLogs();
            }, null, timeToWait, interval);

是否有任何方法可以监视这个计时器,通过轮询或任何其他机制,并获得显示在windows窗体上的信息,如

  • 最后执行时间(例如,进程在7分钟前执行)
  • 下一次执行(下一次执行的时间,例如,如果间隔20分钟,距离上次执行已经过了5分钟,则显示'15分钟到下一次执行'

监视windows服务中的计时器

Timer类没有标准的方法。我建议在父类中封装一个定时器对象,像这样:

public class MonitoredTimer {
    private Timer _timer;
    private int NextExecutionTime;
    private int LastExecutionTime
    public MonitoredTimer(TimerCallback callback,...) {
        _timer = new Timer((s)=>callback(s);UpdateExecutionTimes());
    }
    public int GetLastExecution(){
        return LastExecutionTime;
    }
    ...
}