WPF如何实现跨线程更新UI控件
1.默认情况下,在Windows应用程序中,.NET Framework不允许在一个线程中直接操作另一个线程中的控件。WinForm中实现跨线程操作控件的两种方法:
<1>关闭线程安全检查
Control.CheckForIllegalCrossThreadCalls = false;
1
<2>使用控件的Invoke方法(或BeginInvoke方法、BackgroundWorker)****
2.WPF中控件没有线程安全检查属性,即无法关闭线程安全检查。在WPF中,是通过委托的方式来实现跨线程的UI界面更新
//定义委托
private delegate void DispList2Data(List<int> data);
//线程调用方法
private void Update1Info(List<string> data)
{
this.lvPath.Dispatcher.BeginInvoke(new DispList1Data(Update1Action), data);
}
//定义委托指向的方法
private void Update1Action(List<string> data)
{
lvPath.ItemsSource = null;
lvPath.ItemsSource = data;
}