C# Language Async / wait n'améliorera les performances que si elle permet à la machine d'effectuer des tâches supplémentaires


Exemple

Considérez le code suivant:

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);
}

Cela ne fonctionnera pas mieux que

public void MethodA()
{
     MethodB();
     // Do other work
}

public void MethodB()
{
     MethodC();
     // Do other work
}

public void MethodC()
{
     Thread.Sleep(100);
}

Le but principal de async / waiting est de permettre à la machine d'effectuer un travail supplémentaire, par exemple pour permettre au thread appelant d'effectuer d'autres tâches en attendant le résultat d'une opération d'E / S. Dans ce cas, le thread appelant n'est jamais autorisé à faire plus de travail que ce qu'il aurait pu faire autrement, il n'y a donc pas de gain de performance par rapport à l'appel MethodA() , MethodB() et MethodC() .