VB6应用程序停止响应

5

我有一个用VB6编写的程序,它读取一个长文本文件并执行非常长的操作。 我还实现了进度条,但我的问题是,在一段时间后,我的程序会显示“未响应”,并在任务完成后重新开始响应。

如何解决这个“未响应”问题?


1
欢迎来到StackOverflow。您可能想阅读有关礼仪的常见问题解答和相关页面,并尽量避免大声喊叫或不必要地使用粗体文本。 - Deanna
1
您可能会对相关问题感兴趣,包括cancelling a long-running process in Vb6using threads in VB6making a kill event for a Vb6 app。这些标题可能看起来不太相关,但答案对您有用。它们解释了在VB6中进行后台处理的一些不同方法。 - MarkJ
2个回答

7

当Windows/Explorer在处理消息时长时间没有处理消息时,它会将一个进程更改为“未响应”状态。

在VB6中,如果在不调用DoEvents的情况下运行长时间的代码段,就会发生这种情况。

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

在这样做时,您需要小心防止重入。通过在长时间操作开始时禁用控件,完成时重新启用它们来轻松解决这个问题。如果您想让用户取消,则需要使用布尔值,在取消按钮单击事件中设置并在调用DoEvents之后检查。


如此讨论(https://dev59.com/t3VC5IYBdhLWcg3w4VX6),+1 - MarkJ

1

在您的长时间操作中,您可以调用DoEvents,但要小心,因为它有各种注意事项


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接