我创建了一个任务列表,如下所示:
public async Task<IList<Foo>> GetFoosAndDoSomethingAsync()
{
var foos = await GetFoosAsync();
var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList();
...
}
通过使用 .ToList()
,所有的任务都应该开始。现在我想等待它们的完成并返回结果。
这在上面的 ...
块中起作用:
var list = new List<Foo>();
foreach (var task in tasks)
list.Add(await task);
return list;
它可以做我想做的事情,但是这看起来有点笨拙,我宁愿写一些更简单的东西,比如:
return tasks.Select(async task => await task).ToList();
... 但是这个不能编译。我错过了什么? 或者只是不可能用这种方式来表达?