WPF 动态添加UI控件 界面假死 怎么办?

WPF 动态添加UI控件 界面假死 怎么办?,第1张

对于UI的修改,你还是需要用UI线程去做,否则会报跨线程错误云云

你要分析一下你这个控件到底耗时在哪里,基本上显示过程不会耗很多,应该是你在获取生成该控件所用的数据耗时比较多,你这个时候可以单开线程去处理,并让UI线程显示正在处理或正在加载之类的,当那个线程已经完成了控件的生成以后,再传递给UI线程,让他把控件显示出来就行了,

如果你要加入动画,同样也是由UI线程去做,至于怎么实现,那就是动画那一方面的应用了

程序的 假死 和 缩短响应时间  是两个概念,处理的方式也不同。

1、造成假死的原因一般只有一个,就是界面线程阻塞的。

WPF、Winform应用默认是只有一个线程的,即UI线程。 当你把某些比较耗时的代码写入事件,那么UI线程就会阻塞,体现给用户的就是“界面卡死了”。

解决方案很简单,使用后台线程处理耗时的任务,让UI线程保持畅通即可。

示例代码:

void Button1_Click(object sender, RoutedEventArgs e)

{

var thread = new System.Threading.Thread(new System.Threading.ThreadStart(() => {

      //这里面写那些很耗时的代码,比如数据库查询之类的

      //后台线程不要去写前端的代码,不要写针对控件的 *** 作,

        //尤其是 TextBlock.Text = 'xxx'这种,  这种要用委托去做,自行百度

})) { IsBackground = true }

thread.Start()

}

2、减少响应时间

这个太宽泛了,很难具体回答, 一般的业务系统会从两方面着手,

一是从代码中优化,减少冗余的代码,减少同一个事件中多次交互性 *** 作,避免多次查询等等。

二是从数据库优化,这个要看数据库工程师的能力了。简单的可以加索引、读写分离,比较复杂的系统可能需要数据库工程师搭建更好的架构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8119117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存