2

これまで、UI以外のスレッドからUIコントロールを更新したい場合は、次のような構文を使用していました。

Dispatcher.Invoke(DispatcherPriority.Normal,
                  new Action(()=>Label1.Content="New Content"));

今、私はそれについてもう少し読んでいます私は次の構文を見つけ続けています:

Label1.Dispatcher.Invoke(//same arguments;

後者の方がいいですか?なぜ私は他の方法よりも1つの方法を選んだのですか?

4

1 に答える 1

6

私は個人的にコントロール自体に使用します。そうすれば、含まれているウィンドウを知っていることさえ心配する必要がないからです。

ただし、それが問題になるとは思いません。少なくとも通常のWin32では、単一のウィンドウ内のすべてのコントロールが単一のUIスレッドによって「所有」されている必要があります。WPFにも引き継がれると思います。(あるウィンドウが別のウィンドウで親を変更する場合、これが当てはまらない場合がありますが、それは非常にまれです。)

于 2009-10-11T19:02:55.237 に答える