我使用windows服务中的System.Threading.Timer定期执行方法。
计时器只触发一次,不触发。谁能帮忙?
下面是代码

private TimerCallback timerDelegate;

protected override void OnStart(string[] args)
{
    timerDelegate = new TimerCallback(DoWork);
    serviceTimer =  new Timer(timerDelegate, null, 1000,Timeout.Infinite);
}

private void DoWork(object state)
{
    GetMessages();
}

最佳答案

函数调用中的最后一个参数(Timeout.Infinite)告诉它在第一次激发和随后每次激发之间使用无限间隔。所以它会在1秒后发射一次,然后再也不会。你可能应该:

serviceTimer = new Timer(timerDelegate, null, 1000, 1000);

documentation开始:
回调调用之间的时间间隔(毫秒)。指定timeout.infinite以禁用周期性信令。

08-17 03:13