J'ai ce code simple :
public static async Task<int> SumTwoOperationsAsync()
{
var firstTask = GetOperationOneAsync();
var secondTask = GetOperationTwoAsync();
return await firstTask + await secondTask;
}
private async Task<int> GetOperationOneAsync()
{
await Task.Delay(500); // Just to simulate an operation taking time
return 10;
}
private async Task<int> GetOperationTwoAsync()
{
await Task.Delay(100); // Just to simulate an operation taking time
return 5;
}
Super. Ça se compile.
Mais disons que j'ai une application console et que je veux exécuter le code ci-dessus (en appelant SumTwoOperationsAsync()
).
static void Main(string[] args)
{
SumTwoOperationsAsync();
}
Mais j'ai lu que (en utilisant sync
) Je dois synchroniser tout le chemin en haut y en bas :
Cela signifie-t-il que mon Main
doit être marquée comme async
?
Eh bien, il ne peut pas être parce qu'il y a une erreur de compilation :
un point d'entrée ne peut pas être marqué avec le modificateur 'async'.
Si je comprends bien l'aspect asynchrone, le fil d'exécution entrera dans le Main
fonction SumTwoOperationsAsync
appellera les deux fonctions et sortira. Mais jusqu'à ce que le SumTwoOperationsAsync
Qu'est-ce que je rate ?