Task.WhenAll(params System.Threading.Tasks.Task[] tasks)
返回一个Task,但是在调用此方法后,获取任务结果的正确方式是什么?
等待该任务完成后,可以通过再次等待原始任务来获取结果,这应该是可以的,因为任务已经完成。另外,也可以使用Task.Result属性来获取结果,但这通常被认为不是好的做法。
Task<TResult1> task1= ...
Task<TResult2> task2= ...
Task<TResult3> task3= ...
await Task.WhenAll(task1, task2, task3)
var a = task1.Result; // returns TResult1
var b = await task1; // also returns TResult1
在这里我应该选择哪一个,为什么呢?
foreach
循环正在处理单个任务,而不是Task.WhenAll
的结果(你正在丢弃它)。 - Jeroen Mostert