Maison > développement back-end > C++ > Quand dois-je utiliser « Task.Run » avec Async et Await ?

Quand dois-je utiliser « Task.Run » avec Async et Await ?

Barbara Streisand
Libérer: 2025-01-04 12:01:35
original
367 Les gens l'ont consulté

When Should I Use `Task.Run` with Async and Await?

Async et Await démystifiés : éviter l'énigme Task.Run

Comprendre async et wait peut être délicat au début, mais décomposer les concepts peut simplifier le processus.

Async vs. Background Thread Exécution

Async ne signifie pas en soi « thread d'arrière-plan » ; il fait référence à des méthodes qui permettent de « céder » le contrôle au thread appelant avant de continuer. Ces points de rendement sont marqués par des expressions d'attente.

Awaitable vs. Async

Les types attendus peuvent être attendus (comme dans les expressions d'attente), tandis que les méthodes asynchrones permettent des opérations asynchrones. exécution. Toutes les méthodes asynchrones ne renvoient pas des types attendus, et vice versa.

Task.Run for Background Execution

Si vous souhaitez exécuter une opération sur un thread en arrière-plan et la rendre waitable, utilisez Task.Run :

private Task<int> DoWorkAsync() 
{
    return Task.Run(() => 1 + 2); 
}
Copier après la connexion

Méthodes asynchrones pour Yielding

Créez des méthodes asynchrones qui renvoient à l'appelant en utilisant wait et async dans la signature de la méthode :

private async Task<int> GetWebPageHtmlSizeAsync()
{
    var client = new HttpClient();
    var html = await client.GetAsync("http://www.example.com/");
    return html.Length;
}
Copier après la connexion

Évitez Task.Run in Synchronous Methods

Il n'est pas recommandé d'encapsuler les méthodes synchrones dans Task.Run. Si vous devez exécuter sur un thread en arrière-plan, créez une tâche distincte.

Ressources pour une exploration plus approfondie

  • [Async/Await Introduction sur M. Thaddeus Payne's Blog](https://blog.m-thaddeus.com/async- and-await-simplified-an- introduction/)
  • [Documentation MSDN sur la programmation asynchrone](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)

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