这是每个开发人员不时面临的一个非常常见的问题,当视觉更新可能如此快速和快速以至于导致表单内容闪烁时。我目前正在使用一个线程来搜索文件并触发一个事件到它的调用(主 VCL)线程来报告每个搜索结果。如果您曾经使用过FindFirst
/ FindNext
,或者为此执行过非常快速且快速的迭代的任何大型循环,那么您就会知道在每次小迭代上更新 GUI 都非常繁重,并且几乎违背了线程的目的,因为线程随后变得依赖于 GUI 更新的速度(在线程内的每次迭代中)。
我对来自线程的每个事件(1 毫秒内可能有 100 个事件)所做的只是增加一个全局整数,以计算迭代次数。然后,我在主窗体的标签中显示该数字。可以想象,来自线程的快速更新会导致闪烁无法控制。
所以我想知道的是,当线程向它提供事件的速度快于它能够更新的速度时,如何避免 GUI 中的这种快速闪烁?
注意:我使用的是 VCL 样式,所以闪烁变得更糟。