你要分析一下你这个控件到底耗时在哪里,基本上显示过程不会耗很多,应该是你在获取生成该控件所用的数据耗时比较多,你这个时候可以单开线程去处理,并让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、减少响应时间
这个太宽泛了,很难具体回答, 一般的业务系统会从两方面着手,
一是从代码中优化,减少冗余的代码,减少同一个事件中多次交互性 *** 作,避免多次查询等等。
二是从数据库优化,这个要看数据库工程师的能力了。简单的可以加索引、读写分离,比较复杂的系统可能需要数据库工程师搭建更好的架构。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)