web-dev-qa-db-fra.com

Remplacement de la bibliothèque parallèle de tâches pour BackgroundWorker?

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

J'ai une application WinForms avec une interface utilisateur de type assistant, et elle effectue certaines tâches de longue durée. Je veux pouvoir avoir une interface utilisateur réactive avec la barre de progression standard et pouvoir annuler l'opération. Je l'ai déjà fait avec BackgroundWorker, mais je me demande si certains modèles TPL peuvent être utilisés à la place?

82
Keith G

La classe Task est une amélioration par rapport à la BackgroundWorker; il prend naturellement en charge l'imbrication (tâches parent/enfant), utilise la nouvelle API d'annulation, la poursuite des tâches, etc.

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

90
Stephen Cleary

Le travail en arrière-plan est toujours un moyen valable d'y parvenir - si vous exécutez plusieurs opérations de grande envergure simultanément, les extensions parallèles mériteraient d'être envisagées, si c'est juste celle-là, je resterais avec le travailleur en arrière-plan.

23
Hatch