我有下面的测试程序,它设置了UnobservedTaskException但是OnTaskException方法永远不会执行。有任何想法吗?
注意:
如果我删除“ for 循环”,那么一切都会按预期工作。
static void Main()
{
SetupUnobservedTaskExceptionHandling();
Task.Factory.StartNew(() =>
{
var counter = 5;
for (; counter > 0; counter--)
{
Console.WriteLine(counter);
Thread.Sleep(1000);
}
throw new InvalidCastException("I threw up!");
});
GC.Collect();
GC.WaitForPendingFinalizers();
Console.ReadLine();
}
private static void SetupUnobservedTaskExceptionHandling()
{
TaskScheduler.UnobservedTaskException += OnTaskException;
}
private static void OnTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
Console.WriteLine("Error!" + e.Exception);
e.SetObserved();
}