WPF子线程更新UI(Dispatcher.BeginInvoke)

   在做WPF开发时,如果直接在子线程里更新UI会报错—–“调用线程无法访问此对象,因为另一个线程拥有该对象。”,这是因为WPF禁止在非UI线程里直接更新UI界面。



解决方案:
  在子线程里调用Dispatcher.BeginInvoke()或者Invoke()方法。

   例如更新一个Button上的文字内容,可以在子线程里这样写:

this.myButton.Dispatcher.BeginInvoke(new Action(()=>
{ 
    this.myButton.Content = "change button content!!!";
}));
1
2
3
4
  这里使用了Action()委托。Dispatcher.BeginInvoke()代表异步执行,不等待委托结束就更新。Dispatcher.Invoke()代表同步执行,需等待委托执行完成。

猜你喜欢

转载自www.cnblogs.com/Jeely/p/11711989.html