Gérer les opérations asynchrones simultanées et garantir leur achèvement
Ce guide présente des stratégies efficaces pour exécuter simultanément plusieurs tâches asynchrones au sein d'une application console et vérifier leur réussite.
Méthode 1 : Tirer parti Task.WhenAll
Contrairement à certaines ressources existantes, Task.WhenAll
fournit une solution simple pour exécuter plusieurs opérations asynchrones simultanément et attendre que toutes se terminent. Voici une illustration :
<code class="language-csharp">var task1 = PerformTaskAsync(); var task2 = PerformAnotherTaskAsync(); await Task.WhenAll(task1, task2);</code>
Task.WhenAll
renvoie une tâche attendue qui ne se termine qu'une fois que toutes les tâches d'entrée (dans ce cas, task1
et task2
) sont terminées. Cela garantit que le code suivant ne s'exécutera qu'une fois toutes les opérations asynchrones terminées.
En comparant Task.WaitAll
et Task.WhenAll
Task.WaitAll
et Task.WhenAll
attendent tous deux la fin de la tâche, mais diffèrent considérablement. Task.WaitAll
bloque le fil de discussion actuel, alors que Task.WhenAll
n'est pas bloquant. La gestion des exceptions diffère également : Task.WaitAll
regroupe les exceptions en un seul AggregateException
, tandis que Task.WhenAll
donne lieu à une tâche Faulted
contenant les exceptions agrégées.
Gestion robuste des erreurs
Task.WaitAll
lance un AggregateException
si une tâche échoue ou est annulée. Task.WhenAll
renvoie une tâche Faulted
si une tâche échoue, ou une tâche Canceled
si les tâches sont annulées sans aucun échec. Une gestion appropriée des exceptions est cruciale pour gérer correctement les erreurs potentielles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!