的異步人口,我想填充集合使用集合初始化,將調用異步方法:集合初始化
public class Diagnostics
{
public async Task<IEnumerable<DiagnosticsInfo>> Get() => new List<DiagnosticsInfo>
{
await GetDiagnosticsInfo1(),
await GetDiagnosticsInfo2(),
await GetDiagnosticsInfo3()
};
}
目的是讓所有的GetDiagnosticsInfoX()
方法並行執行。 我懷疑生成的代碼會同步調用GetDiagnosticsInfoX()
方法 - 它將在調用第二個方法之前等待第一個調用。
我的直覺是否正確?
如果是的話我想我需要等待這樣所有的任務:
public class Diagnostics
{
public async Task<IEnumerable<DiagnosticsInfo>> Get()
{
var task1 = GetDiagnosticsInfo1();
var task2 = GetDiagnosticsInfo2();
var task3 = GetDiagnosticsInfo3();
await Task.WhenAll(task1, task2, task3);
return new List<DiagnosticsInfo> {task1.Result, task2.Result, task3.Result};
}
}
我的直覺是否正確?是。 ;) –