我的内部有Windows Service
和System.Timers.Timer
。计时器的AutoReset
属性设置为false
,计时器的Elapsed
event
内的代码包含在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块无法捕获它?