Task.Start/Wait vs Async/Await : quelle est la différence ?
Dans le monde de la programmation asynchrone, il est crucial de comprendre la différence entre les méthodes synchrones utilisant Task.Start/Wait et les méthodes asynchrones utilisant Async/Await.
Veuillez consulter l'extrait de code suivant :
<code class="language-csharp">public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); }</code>
Dans le premier extrait de code, nous utilisons la méthode de synchronisation traditionnelle Task.Start/Wait. Voici comment cela fonctionne :
En revanche, le deuxième extrait de code démontre une approche asynchrone utilisant Async/Await :
La principale différence entre ces deux méthodes réside dans le comportement du thread pendant l'exécution de la tâche. Avec Task.Start/Wait, le thread est bloqué et ne peut pas répondre aux autres événements. En revanche, Async/Await permet à un thread d'effectuer d'autres tâches en attendant une réponse.
Imaginez commander un déjeuner dans un restaurant. Utilisez Task.Start/Wait comme si vous ignoriez la personne assise à côté de vous avant de manger. Utiliser Async/Await, c'est comme poursuivre une conversation avec un ami en attendant que la soupe soit servie. Le travail en arrière-plan est toujours en cours, mais votre thread peut effectuer d'autres opérations en attendant les résultats.
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!