我在VB6中有一个长时间运行的进程,我想在执行下一行代码之前完成.我怎样才能做到这一点?内置功能?我可以控制等待多长时间吗?
琐碎的例子:
Call ExternalLongRunningProcess Call DoOtherStuff
我该如何延迟'DoOtherStuff'?
虽然Nescio的答案(DoEvents)可行,但它会使您的应用程序使用100%的一个CPU.睡眠将使UI无响应.你需要的是两者的结合,似乎最有效的神奇组合是:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) While IsStillWaitingForSomething() DoEvents DoEvents Sleep(55) Wend
为什么两个DoEvents,一个睡眠55毫秒?55毫秒的睡眠是VB6可以处理的最小切片,并且在需要超响应的情况下有时需要使用两个DoEvent(不是通过API,但是如果应用程序响应外部事件,SendMessage,Interupts等).
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