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() 相比,沒有效能提升。