【发布时间】:2012-02-23 04:13:39
【问题描述】:
我知道在使用 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 );
}
【问题讨论】:
-
嗯,这是我生命中的 4-6 个小时,我永远不会回来。微软为了不崩溃,这是多么可怕的决定。
标签: .net multithreading c#-4.0 asynchronous unhandled-exception