2009-03-22 4 views
4

Est-ce que l'événement terminé du contrôle BackgroundWorker revient sur le fil de l'interface graphique ou dois-je le ramener?BackgroundWorker a terminé l'événement - quel fil?

De plus, est-ce que l'événement de progression revient sur le fil de l'interface graphique ou dois-je le ramener?

Répondre

5

Les deux événements seront rassemblés sur le thread de l'interface utilisateur.

3

Tous les événements reviendront sur le thread qui a créé l'instance de BackgroundWorker. Tout ce que votre client a à faire est d'écouter l'événement.

Vous avez probablement été ici, mais voir aussi: BackgroundWorker Events

3

Il sera élevé sur le thread d'interface utilisateur qui trouve son origine l'opération. Sous le capot, BackgroundWorker utilise un SynchronizationContext pour marshaling entre les deux threads. WPF et WinForms installeront un SynchronizationContext approprié au démarrage.

2

Si BackgroundWorker a été créé à partir du thread d'interface utilisateur, les deux événements seront également déclenchés sur le thread d'interface utilisateur.

S'il a été créé à partir d'un thread d'arrière-plan, l'événement sera déclenché sur un thread d'arrière-plan non défini.

Voir ce post et ce problème de connexion pour plus d'informations.

https://stackoverflow.com/a/2806824/279999

http://connect.microsoft.com/VisualStudio/feedback/details/116930/backgroundworker-components-progresschanged-and-runworkercompleted-event-run-on-wrong-thread

Questions connexes