我们在编程的时候,经常思路是比较直接的,一开始会经常在线程里面去更新界面上元素,然后VS就给我们报错 “不能修改由其他线程创建的对象”。
在WPF中,我们会简单地通过调用dispatch的方式在线程中更新UI
Application.Current.Dispatcher.Invoke(()=>{
//update UI code
});
在UWP中,其实也很简单,只需要多一个函数设置即可。
//在MainPage的后台code里面添加这个申明
public async void Invoke(Action action, Windows.UI.Core.CoreDispatcherPriority Priority = Windows.UI.Core.CoreDispatcherPriority.Normal)
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Priority, () => { action(); });
}
//在线程函数里面如下调用
this.Invoke(()=>
{
//update UI code
Label.Text="process completed!";
});
原文来自下面链接,这里仅作为自己的笔记。