.net Windows服务中的计时器停止

.net Windows服务中的计时器停止,.net,windows,c#-4.0,service,timer,.net,Windows,C# 4.0,Service,Timer,我有一个Windows服务和一个System.Timers.Timer。计时器的AutoReset属性设置为false,计时器的已用事件中的代码包装在这样一个try..catch..finally块中: try { Parallel.ForEach (...) { DoSomeAction(); } } catch { LogException(...); } finally { // _timer is the

我有一个
Windows服务
和一个
System.Timers.Timer
。计时器的
AutoReset
属性设置为
false
,计时器的
已用事件
中的代码包装在这样一个
try..catch..finally
块中:

try
{
    Parallel.ForEach (...) 
        {
            DoSomeAction();
        }
}
catch
{
    LogException(...);
}
finally
{
    // _timer is the System.Timers.Timer
    _timer.Start();
}
DoSomeAction()
方法还通过Task.Run方法运行一些并发操作

我知道.NET的计时器会吞噬异常,但是因为整个代码都被包装在一个try…catch…finally块中,我希望一旦引发异常,finally块会重新启动计时器,但不会发生。因此,我们必须经常观看此Windows服务,并每天重新启动几次


我猜其中一个线程中发生了异常,但是try..catch块无法捕获它

修复异常,而不是通过重新启动计时器来修复症状。至少在计时器处理程序中捕获并记录它。是否调用了函数
LogException(…)
?我们记录所有线程中的所有异常。日志中没有发现异常!我不确定是否调用了catch块中的代码。你必须咨询一位通灵师。添加更多日志记录,而不仅仅是异常。您是否知道任务结束时,finally Out of Task.Run无法获得控制权?