Maison > développement back-end > C++ > Task.Start/Wait vs Async/Await : quelle est la principale différence dans la programmation asynchrone ?

Task.Start/Wait vs Async/Await : quelle est la principale différence dans la programmation asynchrone ?

Mary-Kate Olsen
Libérer: 2025-01-10 22:23:46
original
336 Les gens l'ont consulté

Task.Start/Wait vs. Async/Await: What's the Key Difference in Asynchronous Programming?

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>
Copier après la connexion

Dans le premier extrait de code, nous utilisons la méthode de synchronisation traditionnelle Task.Start/Wait. Voici comment cela fonctionne :

  • Utilisez Task.Factory.StartNew pour créer une nouvelle tâche et effectuer des opérations fastidieuses dans la méthode DoSomethingThatTakesTime.
  • Bloquez le thread actuel en appelant la méthode Wait() sur la tâche. Cela signifie que le programme attendra que la tâche soit terminée.

En revanche, le deuxième extrait de code démontre une approche asynchrone utilisant Async/Await :

  • Encore une fois, démarrez une tâche comme avant.
  • Mais au lieu d'utiliser Wait() pour bloquer le fil, il utilise le mot-clé wait. Cela entraîne la poursuite de l'exécution du thread actuel pendant l'exécution de la tâche en arrière-plan.
  • Lorsque la tâche est terminée, un message sera automatiquement mis en file d'attente dans la file d'attente des messages, indiquant que la section de code suivant wait doit reprendre l'exécution.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal