5

我有一个用 VB6 编写的程序,它读取一个长文本文件并执行一个很长的操作。我也实现了进度条,但我的问题是,在我的程序说“没有响应”之后,它在任务完成后再次开始响应。

如何消除此“无响应”问题?

4

2 回答 2

7

Windows/Explorer 会在进程过长而不处理任何消息时将其更改为“未响应”状态。在 VB6 中,当运行一段较长的代码而不调用DoEvents.

不幸的是,VB6 不容易做多线程,所以最好的选择是DoEvents在操作期间定期调用。理想情况下,这将是在更新进度条位置之后。

执行此操作时,您需要小心防止重新进入。通过在长时间操作开始时禁用控件并在完成后重新启用它们,这很容易。如果要让它们取消,则需要使用在取消按钮单击事件中设置的布尔值并调用后检查DoEvents

于 2012-06-22T13:32:11.177 回答
1

您可以调用DoEvents您的长期操作,但要小心,因为它有各种相关的警告

于 2012-06-22T13:21:45.030 回答