【发布时间】:2013-07-17 18:47:36
【问题描述】:
使用 Delphi XE2,如何在 TIdHTTP 对象在后台工作时播放/更新 TAnimate 动画?例如,我有 IdHTTP1.Post 在远程服务器上等待这个 PHP“应用程序”完成:
<?php
echo date('h:i:s') . "\n";
sleep(5);
echo date('h:i:s') . "\n";
?>
在这 5 秒内,即使是线程定时器 (TJvThreadTimer) 也不会触发!我还尝试使用带有 CreateTask 的 OmniThreadLibrary 将 IdHTTP1.Post 放入单独的线程中。即使在这种情况下,线程计时器也不会触发,TAnimate 动画也不会更新。
那么,当IdHTTP1.Post 在后台工作时,我可以做些什么来为动画制作动画?
【问题讨论】:
-
只需将 HTTP POST 任务放到后台线程并在主线程中播放动画(在您的表单上)。还是我错过了什么? POST 工作时更新动画的确切含义是什么?
-
@TLama 动画应该简单地播放,目的是为了以一种很好的方式向用户展示程序不会挂起。但是我已经将 HTTP POST 放在后台任务中,但是动画没有播放。
-
动画是否播放过(我的意思是在一个普通的项目中)?你有Windows以上的Vista吗?你要展示一些 Explorer 动画吗?如果您对上述评论的回答是“否”、“是”和“是”,则将
ShellAnimations单元添加到您的 uses 子句中。 -
我当然知道 ShellAnimations 的事情,当然动画在没有 HTTP POST 工作的情况下播放。
-
在一个线程中播放动画几乎没有表明另一个线程中的操作没有挂起。为了真正证明没有挂起,负责执行实际工作的线程需要与负责推进动画的线程相同。
标签: multithreading delphi animation delphi-xe2 idhttp