UWP与Android中如何在多线程中刷新UI
无论我们是在进行UWP开发亦或是Android开发,都会在程序运行的同时产生一个UI线程,这是管理你界面的线程,而这也导致你在子线程中越界修改界面时将会报错。本文将对UWP以及Android更改UI的方式进行讨论。
UWP
现在先假设我们拥有一个子线程thread1,其要去更改Mainpage中的一名为TextBox1的控件内的文字(在此例中System.Threading.Tasks.Task和System.Threading.Thread等价)
thread的定义为
private void thread(){
/*
do_something();
*/
TexBox.Text="Hello World!";
}
显然这样会报错,所以我们得采用通知UI线程进行更改的方式,其分为两步:
1.添加Invoke函数
2.将更改UI的action传入Invoke函数中
我们首先进行第一步
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(); });
}
这