HintergrundWorker RunWorkerCompleted Event

Meine C # -Anwendung hat mehrere Hintergrundarbeiter. Manchmal feuert ein Hintergrundarbeiter einen anderen ab. Wenn der erste Hintergrund-Worker abgeschlossen und das RunWorkerCompleted Ereignis ausgetriggers wurde, auf welchem ​​Thread wird dieses Ereignis ausgetriggers, die UI oder der erste Hintergrund-Worker, von dem RunWorkerAsync aufgerufen wurde? Ich verwende Microsoft Visual C # 2008 Express Edition. Irgendwelche Gedanken oder Vorschläge, die Sie vielleicht haben, würden geschätzt werden. Vielen Dank.

Wenn der BackgroundWorker aus dem Benutzeroberflächenthread erstellt wurde, wird das RunWorkerCompleted Ereignis auch auf dem Benutzeroberflächenthread RunWorkerCompleted .

Wenn es aus einem Hintergrundthread erstellt wurde, wird das Ereignis in einem nicht definierten Hintergrundthread ausgetriggers (nicht notwendigerweise im selben Thread, es sei denn, Sie verwenden einen benutzerdefinierten SynchronizationContext ).

Interessanterweise scheint dies auf MSDN nicht so gut dokumentiert zu sein. Die beste Referenz, die ich finden konnte, war hier :

Die bevorzugte Methode zum Implementieren von Multithreading in Ihrer Anwendung ist die Verwendung der BackgroundWorker- Komponente. Die BackgroundWorker- Komponente verwendet ein ereignisgesteuertes Modell für Multithreading. Der Hintergrundthread führt Ihren DoWork- Ereignishandler aus, und der Thread, der Ihre Steuerelemente erstellt, führt Ihre ProgressChanged- und RunWorkerCompleted- Ereignishandler aus. Sie können Ihre Steuerelemente über die Ereignisbehandlungsroutinen ProgressChanged und RunWorkerCompleted aufrufen .