【发布时间】:2017-10-15 13:21:55
【问题描述】:
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 集合中获取结果?
【问题讨论】:
-
foreach(var meTask in tasks) /*get result/*meTask.Result;?或者更简单的foreach(Task<Request> meTask in requestTasks) meTask.Result; -
@m.rogalski
Result是同步阻塞等待。 -
但是当您等待所有任务时,结果应该立即可用。至少据我所知。
-
@m.rogalski 是的,但
async-await的重点是在等待任务完成时不要阻塞线程。 -
我不明白你的意思。他在
await Task.WhenAll(tasks);等待这些任务,所以在这些任务完成后,他可以使用foreach来检索结果(之前在任务中完成)。或者也许我在这里遗漏了一些东西。
标签: c# async-await