Asyncawait 只有在允許機器完成額外工作時才會提高效能
請考慮以下程式碼:
public async Task MethodA()
{
await MethodB();
// Do other work
}
public async Task MethodB()
{
await MethodC();
// Do other work
}
public async Task MethodC()
{
// Or await some other async work
await Task.Delay(100);
}
這不會比任何表現更好
public void MethodA()
{
MethodB();
// Do other work
}
public void MethodB()
{
MethodC();
// Do other work
}
public void MethodC()
{
Thread.Sleep(100);
}
async / await 的主要目的是允許機器執行其他工作 - 例如,允許呼叫執行緒在等待某些 I / O 操作的結果時執行其他工作。在這種情況下,呼叫執行緒永遠不會被允許做比其他情況下更多的工作,所以與僅僅同步呼叫 MethodA()
,MethodB()
和 MethodC()
相比,沒有效能提升。