82 votes

La bibliothèque de tâches parallèles remplace-t-elle BackgroundWorker ?

La bibliothèque de tâches parallèles contient-elle quelque chose qui pourrait être considéré comme un remplacement ou une amélioration de la classe BackgroundWorker ?

J'ai une application WinForms avec une interface utilisateur de type assistant, et elle effectue des tâches de longue durée. Je veux être en mesure d'avoir une interface utilisateur réactive avec la barre de progression standard et la possibilité d'annuler l'opération. J'ai déjà fait cela avec BackgroundWorker, mais je me demande s'il n'y a pas des modèles TPL qui peuvent être utilisés à la place ?

90voto

Stephen Cleary Points 91731

El Task est une amélioration par rapport à la classe BackgroundWorker il prend naturellement en charge l'imbrication (tâches parents/enfants), utilise la nouvelle API d'annulation, les continuations de tâches, etc.

J'ai un exemple sur mon blog montrant l'ancien BackgroundWorker manière de faire les choses et la nouvelle Task façon de faire les choses. Je dispose d'une petite classe d'aide pour les tâches qui doivent signaler leur progression, car je trouve la syntaxe plutôt maladroite. L'exemple couvre les valeurs de résultat, les conditions d'erreur, l'annulation et le rapport de progression.

23voto

Hatch Points 256

Le travailleur d'arrière-plan est toujours un moyen valable d'y parvenir - si vous exécutez plusieurs grandes opérations en même temps, les extensions parallèles méritent d'être prises en compte, mais si vous n'en avez qu'une, je m'en tiendrai au travailleur d'arrière-plan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X