IEnumerable<Task<Request>> requestTasks = CreateRequestTasks();
Task<Trace> traceTask = CreateTraceTask();
var tasks = new List<Task>();
tasks.AddRange(requestTasks);
tasks.Add(traceTask);
await Task.WhenAll(tasks);
如何从requestTasks
集合中获取结果?
答案 0 :(得分:7)
如何从requestTasks集合中获取结果?
将其保存为单独的(具体化的)集合:
List<Task<Request>> requestTasks = CreateRequestTasks().ToList();
...
await Task.WhenAll(tasks);
var results = await Task.WhenAll(requestTasks);
请注意,第二个await Task.WhenAll
实际上不会执行任何&#34;异步等待&#34;,因为所有这些任务都已完成。
答案 1 :(得分:0)
由于你必须等待所有人,你可以简单地写
IEnumerable<Task<Request>> requestTasks = CreateRequestTasks();
Task<Trace> traceTask = CreateTraceTask();
var tasks = await Task.WhenAll(requestTasks);
var trace = await traceTask;
在同等async
区块内:它可能看起来更清晰。
另请注意,上述traceTask
在创建时开始(实际上这是same answer,因为问题本身是重复的。)