我有以下代码
var exceptions = new ConcurrentQueue<Exception>();
Task task = Task.Factory.StartNew(() =>
{
try
{
Parallel.Invoke(
async () => await _aViewModel.LoadData(_someId),
async () => await _bViewModel.LoadData(_someId)
);
}
catch (Exception ex)
{
exceptions.Enqueue(ex);
}
}).ContinueWith((continuation) =>
{
if (exceptions.Count > 0) throw new AggregateException(exceptions);
});
我在这里使用 Task.StartNew,因为 LoadData 方法使用 Dispatcher.StartAsync 方法在内部调用主 UI 线程。
我遇到的问题是,如果我强制_aViewModel.LoadData
抛出异常,则不会在 Catch(Exception) 子句中捕获(也不会捕获 AggregateException)。我不明白为什么!?