我有一个用 VB6 编写的程序,它读取一个长文本文件并执行一个很长的操作。
我也实现了进度条,但我的问题是,在我的程序说“无响应”之后,它在任务完成后再次开始响应。
如何消除这个“无响应”问题?
最佳答案
Windows/Explorer 将一个进程更改为“无响应”状态,当它没有处理任何消息的时间过长时。
在 VB6 中,当运行一段很长的代码而不调用 DoEvents
时会发生这种情况。 .
不幸的是,VB6 不能轻松地执行多个线程,因此您最好的选择是定期调用 DoEvents
在操作过程中。理想情况下,这将是在更新进度条位置之后。
执行此操作时,您需要小心防止重入。通过在长时间操作开始时禁用控件并在完成时重新启用它们,这很容易。
如果你想让它们取消,你需要使用你在取消按钮点击事件中设置的 bool 值并检查 后 调用 DoEvents
.
关于VB6 应用程序停止响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156978/