答案 0 :(得分:4)
在单独的线程中执行它。 (见TThread课程)
答案 1 :(得分:2)
永远不要使用Application.ProcessMessages
,它会打开一堆蠕虫
真的。
让我再说一遍:不要使用Application.ProcessMessages
This is why:它要求您的所有消息都始终是可重入的
您的消息传递,更重要的是您使用的库中的消息传递(您无法确定它是否可重入)。
现在和未来。
即使在你尚未测试的情况下,或者你还没有看到的使用模式。
你应该做多线程 你真的应该 可能需要一些时间才能使您的同步正确,但使用像backgroundworker之类的东西会以一种简洁的方式封装大部分内容。
如果你不能进行多线程,那么你可以cheat 但你不应该作弊。
作弊是关于推迟你真正的解决方案 推迟成本比现在更多。
这完全是upstream decisions and downstream costs 稍后做出错误的决定比现在做出正确的决定更加昂贵,并投入一些时间来做正确的事。
修改强>
使用辅助消息循环的唯一例外是显示模式窗体或对话框时。由于模态,辅助消息循环具有这些消息的受限范围。
编辑2:
该模态导致所有其他形式被自动禁用;然而,定时器和其他非UI消息仍在处理中,因此仍然可以进行重新定位。
- 的Jeroen
答案 2 :(得分:0)
从我的角度来看,你有两个选择(取决于任务(或循环)将花费多长时间):