我需要运行多个可等待任务,然后将它们的结果汇总到一个列表中并返回。
我可以在循环中创建这些任务,并使用Task.WhenAll来等待它们,但我无法想出如何访问每个等待任务的结果。我尝试了下面的方法,但是Result未定义。
List<Service> services = new List<Service>();
List<Exception> exceptions = new List<Exception>();
List<Task<Service>> tasks = new List<Task<Service>>();
foreach (string serviceMoniker in monikers)
{
try
{
tasks.Add(GetService(serviceMoniker, tenantMoniker, countryCode, environmentId));
}
catch (Exception e) { exceptions.Add(e); }
}
var continuation = Task.WhenAll(tasks);
for (int i=0; i < continuation.Result.Length - 1; i++)
{
services.Add(continuation.Result[i].Result);
}
另一次尝试
await Task.WhenAll(tasks);
foreach (Task t in tasks)
{
services.Add(t.Result);
}
tasks.Add(…)
时,你不会看到异常,但你会发现一些任务是 faulted,因为未处理的异常被抛出。 - stuartd