7 votes

Meilleure pratique pour plusieurs longues méthodes en utilisant BackgroundWorker

J'ai un formulaire qui comporte de nombreuses longues méthodes. Ma question est : quelle est la meilleure pratique ? Utiliser une méthode anonyme et un seul BackgroundWorker ou créer une instance de BackgroundWorker pour chaque longue méthode.

S'il vous plaît aidez. Merci.

2voto

Will Marcouiller Points 11649

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?

2voto

Yaron Adler Points 182

En résumé :

Avantages dans un BackgroundWorker :

  1. Vous contrôlez l'ordre d'exécution pour la méthode multiple. Cependant, c'est aussi un inconvénient, car si vous utilisez plusieurs BackgroundWorkers, vous "supposez" qu'ils sont exécutés en parallèle et vous n'avez pas à vous soucier de l'ordre ;

  2. Moins de surcharge pour la création et la suppression de threads (si possible, utilisez la même instance à chaque fois, mais ce n'est pas toujours possible, selon ce qui démarre le processus. Ce n'est pas possible si vous voulez que cela soit réalisé simultanément) ;

  3. Si vous souhaitez communiquer entre les threads, vous pouvez accumuler une communication en lot et le faire de manière plus efficace. De plus, cela peut vous faire économiser une partie de cette communication si toutes les méthodes sont exécutées dans le même thread.

Avantages dans plusieurs BackgroundWorkers :

  1. Le parallélisme mentionné ci-dessus ;

  2. Chaque fin de processus peut utiliser un autre délégué et donc effectuer une autre opération.

J'espère que cela vous soit utile !

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