【发布时间】:2012-04-02 16:23:38
【问题描述】:
我对何时使用 Dispatcher.Invoke 从不同的线程更新 UI 内容存有疑问。
这是我的代码...
public Window4()
{
InitializeComponent();
this.DataContext = this;
Task.Factory.StartNew(() => Test() );
}
private List<string> listOfString = new List<string>();
public List<string> ListOfString
{
get { return listOfString; }
set { listOfString = value; }
}
public void Test()
{
listOfString.Add("abc");
listOfString.Add("abc");
listOfString.Add("abc");
}
<Grid>
<ListView ItemsSource="{Binding ListOfString}" />
</Grid>
我在不同的线程上开始一个新任务,我需要使用 Dispatcher.BeginInvoke 来更新 UI。
在这种情况下,它正在更新 UI,但我已经看到人们使用 Dispatcher.Invoke 或 BeginInvoke 从不同的线程更新 UI。
所以我的问题是我们什么时候必须这样做,为什么在这种情况下它可以正常工作。
感谢和问候, 哈维克
【问题讨论】: