0

我的 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 mins to next execution'
4

1 回答 1

1

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;
    }

    ...
}
于 2013-06-17T07:48:05.990 回答