Maison >développement back-end >C++ >Task.Run() vs Task.Factory.StartNew() : quand devez-vous utiliser lequel ?

Task.Run() vs Task.Factory.StartNew() : quand devez-vous utiliser lequel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-12 08:58:41667parcourir

Task.Run() vs. Task.Factory.StartNew(): When Should You Use Which?

Programmation asynchrone .NET : Comparaison de Task.Run() et Task.Factory.StartNew()

En programmation asynchrone .NET, il est souvent nécessaire de créer et de démarrer de nouvelles tâches. A cet effet, le framework .NET propose deux méthodes couramment utilisées : Task.Run() et Task.Factory.StartNew(). Bien que les deux atteignent le même objectif fondamental, leurs fonctionnalités et leurs cas d’utilisation diffèrent.

Task.Factory.StartNew()

Task.Factory.StartNew()Plus riche en fonctionnalités, offrant plusieurs options pour personnaliser le comportement des nouvelles tâches. Certains des paramètres clés qu'il accepte incluent :

  • Action/Func : Délégué à exécuter dans une nouvelle tâche.
  • CancellationToken : Un jeton d'annulation qui peut être utilisé pour abandonner la tâche.
  • TaskCreationOptions : Un ensemble d'options qui contrôlent le comportement d'une tâche, telles que ses options de création et son planificateur.
  • TaskScheduler : Le planificateur qui exécutera la tâche.

Cette flexibilité vous permet d'adapter les tâches à vos besoins spécifiques, comme la création de tâches de longue durée ou l'exécution de tâches sur des threads spécifiques.

Task.Run()

Task.Run() est une version simplifiée de Task.Factory.StartNew() introduite dans .NET 4.5. Il fournit une configuration par défaut pour les nouvelles tâches, en utilisant les paramètres suivants :

  • CancellationToken.None : N'utilise pas de jeton d'annulation.
  • TaskCreationOptions.DenyChildAttach : Les sous-tâches créées par de nouvelles tâches ne peuvent pas être attachées à la tâche d'origine.
  • TaskScheduler.Default : La tâche s'exécutera sur le planificateur de tâches par défaut, généralement en utilisant un pool de threads.

est un choix pratique lorsque vous n'avez besoin d'aucune personnalisation particulière et que vous utilisez simplement les paramètres par défaut pour démarrer rapidement une nouvelle tâche. Task.Run()

Quand utiliser Task.Run() vs Task.Factory.StartNew()

En général, utilisez

lorsque vous devez personnaliser le comportement d'une nouvelle tâche. Cela inclut les scénarios suivants : Task.Factory.StartNew()

    Créer des tâches de longue durée
  • Précisez une politique d'annulation spécifique
  • Exécuter des tâches sur un thread ou un pool de threads spécifique
Utilisez

lorsque vous n'avez besoin d'aucune personnalisation et créez simplement une nouvelle tâche avec les paramètres par défaut. Task.Run() est un raccourci qui simplifie la création de tâches sans configuration supplémentaire. Task.Run()

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!

Déclaration:
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