0

我有一个简单的 VCL 表单,其中设置了一个 TAnimate 组件以使用 aviCopyFiles。该表单包含 ShellAnimations 单元,因此可以在 Windows 7 上运行。

在表单激活时,它使 TAnimate 处于活动状态,然后开始使用 LZCopy 复制文件作为更新过程的一部分。

但我发现 TAnimate 图像只有在我调用 Application.ProcessMessages 时才会发生变化,即使它应该在它自己的线程中(Timers 属性为假)。

如何在循环复制更新的文件时使其平滑动画?

4

1 回答 1

4

改变你的想法!

应用程序的主线程旨在维护 UI 并对操作系统做出响应,例如,为消息队列提供服务并对接收到的消息做出适当的响应。

这样想,你会意识到你不需要TAnimate在你的主线程很忙的时候工作。您需要的是通过将繁重的工作转移到不同的线程来拥有响应式主线程。

在您的情况下,移动循环以将更新的文件复制到不同的线程,您将始终通过主线程平滑地为 TAnimate 设置动画。

于 2013-03-15T01:25:54.590 回答