【发布时间】:2010-07-19 19:03:17
【问题描述】:
我正在阅读一本关于 C# 任务并行库的书,并有以下示例,但从未触发 TaskScheduler.UnobservedTaskException 处理程序。谁能告诉我为什么?
TaskScheduler.UnobservedTaskException += (object sender, UnobservedTaskExceptionEventArgs eventArgs) =>
{
eventArgs.SetObserved();
((AggregateException)eventArgs.Exception).Handle(ex =>
{
Console.WriteLine("Exception type: {0}", ex.GetType());
return true;
});
};
Task task1 = new Task(() =>
{
throw new ArgumentNullException();
});
Task task2 = new Task(() => {
throw new ArgumentOutOfRangeException();
});
task1.Start();
task2.Start();
while (!task1.IsCompleted || !task2.IsCompleted)
{
Thread.Sleep( 5000 );
}
Console.WriteLine("done");
Console.ReadLine();
【问题讨论】:
-
我也很好奇——这个例子不正确,因为在这个例子中不可能引发事件......
-
这本书是:apress.com/book/view/1430229675 Pro .NET 4 Parallel Programming in C#
-
@devlife 嗨,我保留了引用,但我的 UnobservedTaskException 事件也没有在这里被触发:stackoverflow.com/questions/11831844/… 你找到解决方案了吗?