Je utiliserais personnellement une instance de BackgroundWorker pour chacune de vos tâches. Cependant, gardez à l'esprit que vous pouvez appeler plusieurs fois la même méthode de délégué dans plusieurs instances différentes de thread.
En ayant un BackgroundWorker par tâche longue, vous aurez un contrôle total sur vos méthodes. De plus, pour autant que je sache, une fois qu'une instance d'un BackgroundWorker effectue une tâche, elle est occupée avec cette tâche de fond et donc non disponible pour les autres. Je pourrais me tromper cependant, mais c'est en tout cas la façon dont je le ferais, car votre gestionnaire d'événements DoWork() peut seulement faire ce qui lui est demandé pour ce BackgroundWorker. Donc, il me semble impossible d'effectuer des tâches totalement différentes pour une seule instance de BackgroundWorker.
Cela vous aide-t-il?