【发布时间】:2013-01-12 11:52:43
【问题描述】:
这是每个开发人员时不时面临的一个非常常见的问题,因为视觉更新可能如此快速和快速,以至于导致表单内容闪烁。我目前正在使用一个线程来搜索文件并触发一个事件到它的调用(主 VCL)线程来报告每个搜索结果。如果您曾经使用过FindFirst / FindNext,或者为此执行过非常快速且快速的迭代的任何大型循环,那么您就会知道在每次小迭代中更新 GUI 非常繁重,并且几乎失败线程的目的,因为线程随后取决于 GUI 更新的速度(在线程内的每次迭代中)。
我对来自线程的每个事件(1 毫秒内可能有 100 个事件)所做的只是增加一个全局整数,以计算迭代次数。然后,我在主窗体的标签中显示该数字。可以想象,来自线程的快速更新会导致闪烁失控。
所以我想知道的是,当线程向其提供事件的速度超过其能够更新的速度时,如何避免 GUI 中的这种快速闪烁?
注意:我使用的是 VCL 样式,所以闪烁变得更糟。
【问题讨论】:
-
窗口化静态控件,TStaticText,不会像 TLabel 那样闪烁。
标签: multithreading delphi user-interface iteration flicker