我有一个用VB6编写的程序,它读取一个长文本文件并执行很长时间的操作。 我还实现了进度条,但我的问题是,在我的程序显示“未响应”之后,它在任务完成时再次开始响应。
如何删除此“无响应”问题?
答案 0 :(得分:7)
Windows / Explorer会在进程太长而没有处理任何消息时将进程更改为“无响应”状态。
在VB6中,当运行一长段代码而不调用DoEvents
时会发生这种情况。
不幸的是,VB6不容易做多个线程,所以你最好选择在操作期间定期调用DoEvents
。理想情况下,这只是在更新进度条位置之后。
执行此操作时,您需要小心防止重新入侵。这很容易通过在长操作开始时禁用控件并在完成时重新启用它们。
如果要取消它们,则需要使用在取消按钮单击事件中设置的布尔值,并在>>调用DoEvents
后检查。
答案 1 :(得分:1)
您可以在漫长的操作中致电DoEvents
,但要小心,因为它与various caveats相关联。