我想知道,当AggregateException.InnerExceptions.Count> 1时,有人遇到过案件吗?

例如,TPL将在任务正文中引发的异常包装在AggregateException中。但是我从来没有见过有多个内部异常的情况。

TPL如何做到这一点?
如何使用任何FCL(或其他广泛使用的库)类来实现此目的(示例将很有用)?

我知道,可以构建此类AggregateException实例,但是问题是关于实践的。我问这个问题是因为我想了解,处理AggregateException的最佳方法是什么。

最佳答案

典型的情况是一个任务依赖于多个任务,并且其中多个任务引发异常。例如:

var t1 = Task.Factory.StartNew( () => { throw new Exception(); } );
var t2 = Task.Factory.StartNew( () => Console.WriteLine("Innocuous") );
var t3 = Task.Factory.StartNew( () => { throw new Exception(); } );

// Output: 2
var t4 = Task.WhenAll(t1, t2, t3)
             .ContinueWith(t => Console.WriteLine(t.Exception.InnerExceptions.Count),
                           TaskContinuationOptions.OnlyOnFaulted);

关于c# - 当AggregateException.InnerExceptions.Count> 1时,有人遇到过案件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16171221/

10-08 21:46