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