Tys*_*son 7 .net multithreading asynchronous unhandled-exception c#-4.0
我知道在使用Tasks 时如何处理无法处理的异常,如果用户代码尚未"观察"它,则仅在终结器中抛出未处理的异常.
我也知道如何Action.BeginInvoke()在加入调用中捕获并重新抛出异步线程(例如)中的未处理异常(例如Action.EndInvoke()).
我不明白的是,这不会导致这个过程崩溃的原因是什么?
static void Main(string[] args)
{
var timer = new System.Timers.Timer() {Interval = 100};
timer.Elapsed += (o, e) => { throw new Exception(); };
timer.Start();
Console.ReadKey( true );
}
Run Code Online (Sandbox Code Playgroud)
从.NET 4.0文档:
在.NET Framework 2.0及更早版本中,定时器组件捕获并抑制由事件处理程序经过的事件引发的所有异常.在将来的.NET Framework版本中,此行为可能会发生更改.
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
没有声明声称此行为实际上已发生变化.