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

Ray*_*ega 11 vb6 process

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

琐碎的例子:

Call ExternalLongRunningProcess
Call DoOtherStuff
Run Code Online (Sandbox Code Playgroud)

我该如何延迟'DoOtherStuff'?

Kri*_*son 16

虽然Nescio的答案(DoEvents)可行,但它会使您的应用程序使用100%的一个CPU.睡眠将使UI无响应.你需要的是两者的结合,似乎最有效的神奇组合是:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

While IsStillWaitingForSomething()
    DoEvents
    DoEvents
    Sleep(55)
Wend
Run Code Online (Sandbox Code Playgroud)

为什么两个DoEvents,一个睡眠55毫秒?55毫秒的睡眠是VB6可以处理的最小切片,并且在需要超响应的情况下有时需要使用两个DoEvent(不是通过API,但是如果应用程序响应外部事件,SendMessage,Interupts等).

  • 我正在投票给你,提醒我,我不再需要做VB6了:-) (5认同)

Nes*_*cio 12

VB.Net:我会使用WaitOne事件句柄.

VB 6.0:我见过一个DoEvents循环.

Do
     If isSomeCheckCondition() Then Exit Do
     DoEvents
Loop
Run Code Online (Sandbox Code Playgroud)

最后,你可以睡觉:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sleep 10000
Run Code Online (Sandbox Code Playgroud)