4

BackgroundWorker コントロールの完了イベントは GUI スレッドに戻ってきますか、それともマーシャリングする必要がありますか?

また、進捗イベントは GUI スレッドに戻ってきますか、それともマーシャリングする必要がありますか?

4

4 に答える 4

4

両方のイベントが UI スレッドにマーシャリングされます。

于 2009-03-22T03:54:55.543 に答える
3

すべてのイベントは、BackgroundWorker のインスタンスを作成したスレッドに返されます。クライアントがしなければならないことは、イベントをリッスンすることだけです。

あなたはおそらくここにいたでしょうが、以下も参照してください: BackgroundWorker イベント

于 2009-03-22T03:55:33.063 に答える
3

操作を開始した UI スレッドで発生します。内部では、BackgroundWorker はSynchronizationContextを使用して 2 つのスレッド間のマーシャリングを行います。WPF と WinForms の両方が、起動時に適切な SynchronizationContext をインストールします。

于 2009-03-22T03:57:17.270 に答える
2

BackgroundWorker が UI スレッドから作成された場合、両方のイベントも UI スレッドで発生します。

バックグラウンド スレッドから作成された場合、イベントは未定義のバックグラウンド スレッドで発生します。

詳細については、この投稿とこの接続の問題を参照してください。

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

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

于 2012-01-05T19:46:18.903 に答える