到目前为止,当我想从非UI线程更新UI控件时,我使用了如下语法:
Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(()=>Label1.Content="New Content"));
现在我正在阅读更多关于它的内容我一直在寻找以下语法:
Label1.Dispatcher.Invoke(//same arguments;
后者更好吗?为什么我会选择一种方法而不是另一种呢?
答案 0 :(得分:6)
我个人会将这个用于控件本身,因为即使知道包含窗口,您也不必担心。
但是,我不认为这很重要 - 至少在正常的Win32中,单个窗口中的所有控件都应该由单个UI线程“拥有”。我希望这也能延续到WPF。 (在某些情况下,这不适用,当一个窗口在另一个窗口中重新定位时,但这种情况非常罕见。)