如何延迟Visual Basic(VB6)中的代码执行?
时间:2020-03-06 14:22:42 来源:igfitidea点击:
我在VB6中有一个运行很长时间的过程,需要在执行下一行代码之前完成该过程。我怎样才能做到这一点?内置功能?我可以控制等待多长时间?
琐碎的例子:
Call ExternalLongRunningProcess Call DoOtherStuff
如何延迟" DoOtherStuff"?
解决方案
将代码分成2个过程。运行第一个,然后运行"长期运行的进程",然后运行第二个进程。
在当前流程的中间运行长时间运行的流程,然后等待其完成。
VB.Net:我将使用WaitOne事件句柄。
VB 6.0:我已经看到了DoEvents循环。
Do If isSomeCheckCondition() Then Exit Do DoEvents Loop
最后,我们可以睡觉:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sleep 10000
如何确定Shelled进程何时终止
如果要调用外部进程,那么实际上就是异步调用它。有关如何等待直到外部过程完成的信息,请参阅上面的MS支持文档。
尽管Nescio的答案(DoEvents)有效,但它将导致应用程序使用一个CPU的100%。睡眠将使UI无响应。我们需要将两者结合起来,最有效的魔术组合是:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) While IsStillWaitingForSomething() DoEvents DoEvents Sleep(55) Wend
为什么要两个DoEvent,一个睡眠55毫秒? 55毫秒的睡眠是VB6可以处理的最小片段,并且在需要超级响应的情况下(有时不是API的要求,但是如果应用程序正在响应外部事件,SendMessage,Interupts等),有时需要使用两个DoEvent。 )。