大约6个小时后,计时器未在控制台应用中触发

时间:2018-08-04 06:30:27

标签: c# .net console-application

我有一个控制台应用程序,该应用程序每10秒运行一次方法。根据以下代码,该方法由计时器触发:

using System.Threading;
public class remoteConnectionManager
{
    private Timer heartbeatTimer = new Timer(heartbeatBegin, null, 10000, Timeout.Infinite);
    private void heartbeatBegin(object obj)
    {
        Console.WriteLine("Heartbeat began");
        try{
            //Run code here
        }
        finally{
            heartbeatTimer.Change(10000, Timout.Infinite);
            Console.WriteLine("Timer changed");
        }
    }
}
public static class globalHolder
{
    public static remoteConnectionManager rConnMan = new remoteConnectionManager();
}

我的问题是,大约6个小时后,计时器完全停止点火。在控制台中看到的最终输出是“心跳开始”。

我尝试同时使用System.Timer和System.Threading.Timer,但都遇到了问题,这使我怀疑这是我的代码存在问题。人们建议计时器超出范围,但是我不确定如果对象被静态设置为静态,该怎么办。

我尝试过的另一种解决方案是将heartbeatTimer.Change()替换为

heartbeatTimer = new Timer(heartbeatBegin, null, 10000, Timeout.Infinite);

但没有帮助。

感谢您的帮助!

编辑:控制台应用程序在Windows 7计算机上运行,​​并且睡眠和Windows更新已关闭

编辑2:我也尝试实现catch{}部分,但无济于事。几个小时后,计时器仍会停止触发。

0 个答案:

没有答案