【发布时间】:2020-06-11 14:01:39
【问题描述】:
我以为我已经了解了async 方法中的异常,以及当任务引发异常时的WhenAll/WhenAny 行为,但是:
internal async Task RunAsync()
{
//...
//one of persistenceTask, monitorsTask is going to throw an exeption
var completedTask = Task.WhenAny(persistenceTask, monitorsTask);
await completedTask; //I expect this to throw but it doesn't
}
.
//in a calling method later
var t = await RunAsync();
当completedTask 出现状态错误时,我可以在调试器中看到内部异常,但t 最终成功完成。我想要是RunAsync抛出的异常 - 我知道WhenAny如果任务出错不会抛出异常,但我想如果我await on一个错误的任务 (completedTask) 这会抛出。
我做错了什么?
【问题讨论】:
-
看看 Jon Skeet 的这篇文章:codeblog.jonskeet.uk/2011/06/22/…
标签: c# .net async-await task-parallel-library