1

Invoke/BeginInvoke を使用してワーカー スレッドから UI スレッドに属するコンポーネントに変更を加える関数またはプロシージャを呼び出す必要があることを理解しています...

私の質問は - InvokeRequired をわざわざチェックする正当な理由はありますか? さまざまな状況で、イベント ハンドラーがワーカー スレッドまたは UI スレッドから呼び出されるとします。UI スレッド自体が最終的に実行するメソッドで Invoke を呼び出すと、何か影響がありますか?

言う...

Private Sub SomeProcedure() Handles event1, event2, event3
  Me.Invoke(New delegateSomeProc(Address of SomeProc))
EndSub

ここで、event1 が UI スレッドから発火し、Event 2 および/または 3 が他のスレッドから発火するとします。イベント 1 の呼び出しには危険がありますが、その必要はありません。少し効率が悪いのでしょうか?

4

2 に答える 2

2

UI スレッド自体が最終的に実行するメソッドで Invoke を呼び出すと、何か影響がありますか?

いいえ、呼び出しが必要ないかのようにおそらくパフォーマンスを除いて、結果はありません。直接メソッド呼び出しは、Invoke インフラストラクチャを通過するよりも高速です。

于 2011-09-01T12:18:40.293 に答える
2

UI スレッド自体が最終的に実行するメソッドで Invoke を呼び出すと、何か影響がありますか?

私が知っている唯一の違いはInvoke、コントロールのハンドルが作成される前に呼び出されると、使用が失敗することです。

この記事では、この問題について詳しく説明します。

于 2011-09-01T12:21:11.063 に答える