.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无法获得控制权?