2

到目前为止,当我想从非 UI 线程更新 UI 控件时,我使用的语法如下:

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

现在我正在阅读更多关于它的内容,我一直在寻找以下语法:

Label1.Dispatcher.Invoke(//same arguments;

后者更好吗?为什么我会选择一种方法而不是另一种?

4

1 回答 1

6

我会亲自将它用于控件本身,因为这样您甚至不必担心知道包含窗口。

但是,我认为这并不重要——至少在正常的 Win32 中,单个窗口中的所有控件都应该由单个 UI 线程“拥有”。我希望这也能延续到 WPF。(在某些情况下,当一个窗口在另一个窗口中重新设置父窗口时,这不适用,但这种情况非常罕见。)

于 2009-10-11T19:02:55.237 回答