线程里修改UI要使用Dispatcher去实现功能,不然要线程不安全
1.修改一个小控件的内容
//声明一个委托
delegate void SetTextBlockTextDelegate(TextBlock txtblk, string text);
//委托调用的实体方法
void SetTextBlockText(TextBlock txtblk, string text)
{
txtblk.Text = text;
}
//此方法线程里调用
private void doUpdate()
{
tB1.Dispatcher.BeginInvoke(new SetTextBlockTextDelegate(SetTextBlockText), tB1, "updated ui" );
}
2.修改多条数据 delegate void MyDelegate();
public void updateUI() {
App.SongInfoViewModel.updateNewSongItemDownState("3131", SongInfo.DOWNLOAD_OVER);
}
//此方法线程里调用
public void updateUI2() {
this.Dispatcher.BeginInvoke(new MyDelegate(updateUI));
}
本文介绍如何在多线程环境下安全地更新WPF应用程序的UI元素。通过使用Dispatcher来确保UI更新操作的线程安全性,避免了因直接从非UI线程修改UI引发的问题。文中提供了具体的代码示例,包括更新单个TextBlock控件和执行多个UI更新任务。
1120

被折叠的 条评论
为什么被折叠?



