如何在Visual Basic(VB6)中延迟代码执行?

时间:2008-09-18 18:09:45

标签: process vb6

我在VB6中有一个长时间运行的过程,我想在执行下一行代码之前完成。我怎样才能做到这一点?内置功能?我可以控制等待多长时间吗?

琐碎的例子:

Call ExternalLongRunningProcess
Call DoOtherStuff

如何延迟'DoOtherStuff'?

8 个答案:

答案 0 :(得分:16)

虽然Nescio的answer(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等)。

答案 1 :(得分:12)

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

答案 2 :(得分:2)

如何确定炮击进程何时终止:

如果您正在调用外部进程,那么您实际上是异步调用它。有关如何等待外部过程完成,请参阅上面的MS支持文档。

答案 3 :(得分:0)

将代码分解为2个进程。运行第一个,然后运行“长时间运行的进程”,然后运行第二个进程。

答案 4 :(得分:0)

在当前进程的中间运行长时间运行的进程并等待它完成。

答案 5 :(得分:0)

我希望您只需将.net framework system.dll或其他内容添加到项目引用中,以便您可以这样做:

if ( ! $product->is_in_stock()){
  echo '<button type="submit" 
class="button alt" onclick="window.location.
href=http://http://138.197.9.71/prov-individuales/">contacto</button>';    
}
每次都是......我的机器上有VB6和VB.net 2008,我总是很难在不同的IDE之间切换。

答案 6 :(得分:0)

如果您想在不声明 sleep 的情况下编写 waitsleep,您可以编写一个使用 systemtimer 的循环。这是我在运行解释器时用于测试/调试的内容。如果您需要这样的东西,可以在解释器暂停时添加:

Dim TimeStart as currency
Dim TimeStop as currency
Dim TimePassed as currency
Dim TimeWait as currency

'use this block where you need a pause
TimeWait = 0.5 'seconds
TimeStart = Timer()
TimePassed = 0
Do while TimePassed < TimeWait  'seconds
    TimeStop = timer()
    TimePassed = TimeStop - TimeStart 
    doevents
loop

答案 7 :(得分:-3)

System.Threading.Thread.Sleep(500)