2009-08-14 7 views
2

SynchronizationContextクラスを使用して、UIアップデートのクロススレッドマーシャリングを実行する予定です。アイデアはしかし、文書から明らかではないが、一つのことは、あなたがSynchronizationContext.Post()を呼び出すときにということであるだけので、私はmainForm.BeginInvoke();.NET SynchronizationContext - どのスレッドに送信/投稿するのですか?

を言うことができるメインフォーム(Application.Run(form)ですなわち1)への参照を持ってすることを避けるためであります、それはそれを呼び出してmarshallsをスレッドします。それは常にメインのアプリケーションスレッド、または最初にSynchronizationContextオブジェクトを初期化したスレッド、または何ですか?

答えて

0

ああ、CodeProjectのは便利なものがあります。

http://www.codeproject.com/KB/threads/SynchronizationContext.aspx

私はそれを見てみましょう。

UPDATE:最初のフォームを開いたときにメインスレッドにSynchronizationContextオブジェクトが指定されていることがわかります。この同期コンテキストのスレッドは、送信およびポストコールがマーシャリングされるスレッドです。

2

SynchronizationContextのタイプによって異なります。クラスを拡張するときは、好きなスレッド(多かれ少なかれ)にメソッド呼び出しを実装することができます。ウインドウは、メインのUIスレッドに戻って行きます。 wpfはディスパッチャスレッドなどを使用します。

関連する問題