WPF禁止跨线程调用线程UI,需使用委托方式完成线程调用。
常见报错:
“调用线程无法访问此对象,因为另一个线程拥有该对象。”
解决办法:
【使用Action()委托】
写法一:
//代表同步执行,需要等待委托执行完成
App.Current.Dispatcher.Invoke((Action)delegate ()
{
this.WindowStyle = WindowStyle.None;
});
//代表异步执行,不等待委托结束就就更新
App.Current.Dispatcher.BeginInvoke((Action)delegate ()
{
this.WindowStyle = WindowStyle.None;
});
写法二:
//代表同步执行,需要等待委托执行完成
this.Dispatcher.Invoke(new Action(() =>
{
this.WindowStyle = WindowStyle.None;
}));
//代表异步执行,不等待委托结束就就更新
this.Dispatcher.BeginInvoke(new Action(() =>
{
this.WindowStyle = WindowStyle.None;
}));