我需要有关简单 Task.WhenAll C# 代码的帮助。我同时触发了多达 50 个不同的任务,但是,其中一些调用可能会返回错误消息。
我正在尝试编写异常处理代码,以便我可以处理有效的代码(它确实如此),但捕获错误的代码,以便我可以针对它们执行额外的代码。
存在 AggregateException,但有没有办法查看是哪个调用/输入导致了该异常?
由于严格的公司政策,我无法分享实际代码,但示例如下:
List<ListDetails> libs = getListDetails();
var tasks = new Task<List<ItemDetails>>[libs.Count];
for (int i = 0; i < libs.Count; i++)
{
tasks[i] = getListItems(libs[i].ServerRelativeUrl, libs[i].ListId);
}
try
{
await Task.WhenAll(tasks);
}
catch(AggregateException aex)
{
//Capture which Server RelativeUrls and ListIDs that failed.
}
最佳答案
等待后可以查询到原来的任务:
var myTasks = ...;
try {
await Task.WhenAll(myTasks);
}
catch (AggregateException) {
//swallow everything
}
foreach (var task in myTasks) {
if (myTask.Status == RanToCompletion)
...
}
关于C# Task.WhenAll 处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698207/