不知道这个题目怎么去,就先这样吧。
今天帮朋友修改以前写的界面的一个bug,发现了一个问题。
作为使用者,肯定不希望看到界面卡到那里,但是有些时候界面上需要显示大量数据,计算又会花费很多的时间。如果在所有数据都计算完成后,再来显示界面,一般使用者都不会接受。
如何实现界面无延迟显示,数据随后更新?
一般的做法都是在界面的初始化过程中,创建一个线程来处理数据,这个就提到了Worker线程与UI线程了(在这里谢谢落星,是他让我知道了这些),我自己的理解UI线程要时时的响应用户的操作,不能有延迟,UI关系着界面的所有显示。而Worker线程则是后台一些数据的处理,处理完成后,再交给UI线程来显示。以前的代码中直接让Worker线程来显示数据了,就造成了死锁,因为Worker线程要操作界面,而UI线程也在操作界面,两个线程相与谦让。
关于UI线程与Worker线程,落星举了一个例子,UI线程就好比是领导,Worker就好比是小弟,用户就好比是总经理,领导给小弟分配任务,然后领导去等待总经理的下一个命令,小弟做完后,把结果告诉领导,领导向总经理汇报。
不过今天我感觉这种方法太复杂了,自己多线程这部分还没太学习。
一般程序正常启动流程是初始化过程中数据计算,然后计算结束后,显示出来界面。怎么样能实现初始化过程中不计算数据,直接显示界面,然后再计算数据来显示?
我在初始化过程中使用了SetTimer设置了一个时钟,然后在OnTimer中进行了数据的计算,这样就实现了先显示界面,后计算数据,有了更好的用户体验吧。
本文探讨了在程序启动过程中如何实现界面无延迟显示,并在后台处理大量数据,以提供更好的用户体验。通过使用多线程技术,将数据处理逻辑与界面更新分离,避免了界面卡顿的问题。实例展示了利用UI线程与Worker线程协同工作的方式,以及如何在初始化阶段预设定时器来提前显示界面,后续进行数据计算。
7409

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



