我有一个简单的VCL表单,其中TAnimate组件设置为使用aviCopyFiles。该表单包括ShellAnimations单元,因此它适用于Windows 7。
在表单激活时,它会使TAnimate处于活动状态,然后在更新过程中使用LZCopy开始复制文件。
我发现的是TAnimate图像只在我调用Application.ProcessMessages时才会改变,即使它应该在它自己的线程中(Timers属性为false)。
如何在循环中使其平滑动画以复制更新的文件?
答案 0 :(得分:3)
改变主意!
应用程序的主线程旨在维护UI并响应操作系统,例如,为消息队列提供服务并对接收的消息做出适当的响应。
这样思考,你会发现你的主线程忙时你不需要TAnimate
。你需要的是通过将繁重的工作移动到不同的线程来获得响应主线程。
在您的情况下,移动循环以将更新的文件复制到另一个线程,您将通过主线程始终获得TAnimate 平滑动画。