2009-02-27 3 views
5

私はこのコードを見つけた:.netではInvoke()の使用方法は何ですか?

this.Invoke(new EventHandler(EventGetSum)); 

は、この書き込みと同じではありません。

EventGetSum(); 

これを使用することは何ですか?

+0

これは非常に悪いタイトルです。多分もっと記述的なものに変更することを検討する必要があります – grapefrukt

+0

この質問を確認するhttp://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -modod-to-a-windows-forms-control/571749#571749 – alex2k8

答えて

13

EventGetSum()と書いた場合、すぐにと呼びます。 EventGetSumメソッドを呼び出します。

new EventHandler(EventGetSum)と書くと、呼び出されるときにEventGetSumが(順番に)呼び出されるデリゲートが作成されます。

Control.Invokeを呼び出すと、制御を担当するUIスレッドから特定のデリゲートが呼び出されます。これは、任意のスレッドからUI要素にアクセスしてはならないため必要です。

5

ウィンドウ内のthisが属するスレッドに対してEventGetSumメソッドを実行します。

4

これは、通常、クロススレッドUIコールを処理するときに使用されます。

ISynchronizeInvokeのMSDNのドキュメントを参照してください。

関連する問題