WPF多线程以及UI

一、界面无响应,即所谓的卡

可以使用
delegate void DeleDisp();
DeleDisp dd = new DeleDisp(DispInfo);
dd.BeginInvoke(null, null);

如果使用了
Dispatcher.BeginInvoke(dd);
则界面依然会卡

二、报异常“控件由其它线程创建,无法访问其它线程的UI”

这个比较简单
只要使用把访问UI属性的代码用
Dispatcher.BeginInvoke()
包装起来就可以了。

如果是循环更改界面,则应该把把循环的代码放在Dispatcher.BeginInvoke()外面。

三、控件不能同步显示

如果出现这种现象,既可以调用控件的
Refresh()
方法来刷新,

还可以调用
System.Windows.Forms.Application.DoEvents()
方法来刷新。

Leave a Reply

Your email address will not be published. Required fields are marked *