监视Windows服务中的计时器

时间:2013-06-17 07:03:07

标签: c# timer windows-services monitoring

我的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分钟'

1 个答案:

答案 0 :(得分: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;
    }

    ...
}