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

Process 如何在Visual Basic(VB6)中延迟代码执行?,process,vb6,Process,Vb6,我在VB6中有一个长时间运行的进程,我想在执行下一行代码之前完成这个进程。我该怎么做?内置功能?我能控制等待多长时间吗 简单的例子: Call ExternalLongRunningProcess Call DoOtherStuff 如何延迟“DoOtherStuff”?将代码分为两个进程。运行第一个,然后运行您的“长运行进程”,然后运行第二个进程。 在当前进程的中间运行您的长时间运行的进程并等待它完成。 VB.Net:我会使用事件句柄 VB6.0:我见过一个DoEvents循环 Do

我在VB6中有一个长时间运行的进程,我想在执行下一行代码之前完成这个进程。我该怎么做?内置功能?我能控制等待多长时间吗

简单的例子:

Call ExternalLongRunningProcess
Call DoOtherStuff

如何延迟“DoOtherStuff”?

将代码分为两个进程。运行第一个,然后运行您的“长运行进程”,然后运行第二个进程。

在当前进程的中间运行您的长时间运行的进程并等待它完成。 VB.Net:我会使用事件句柄

VB6.0:我见过一个DoEvents循环

Do
     If isSomeCheckCondition() Then Exit Do
     DoEvents
Loop
最后,你可以睡觉了:

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

Sleep 10000

如何确定外壳化进程何时终止:

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

当Nescio的(DoEvents)可以工作时,它将导致应用程序100%使用一个CPU。睡眠将使UI无响应。您需要的是两者的结合,而最有效的神奇组合是:

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

While IsStillWaitingForSomething()
    DoEvents
    DoEvents
    Sleep(55)
Wend

为什么两个事件,一个睡眠55毫秒?55毫秒的睡眠时间是VB6可以处理的最小时间片,在需要超级响应的情况下(不是API,而是应用程序响应外部事件、SendMessage、Interupts等),有时需要使用两个DoEvents

System.Threading.Thread.Sleep(500)

我希望您可以将.net framework System.dll或任何内容添加到项目引用中,以便您可以执行以下操作:

Dim ALongTime As Integer = 2000
System.Threading.Thread.Sleep(ALongTime)

…每次。我的机器上有VB6和VB.net 2008,我总是很难在完全不同的IDE之间切换。

如果您想编写
休眠
等待
而不声明
休眠
,您可以编写一个使用系统计时器的循环。这就是我在运行解释器时用于测试/调试的内容。如果需要,可以在解释器暂停时添加:

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
Dim TimeStart作为货币
作为货币的时间上限
作为货币传递的时间
Dim TimeWait作为货币
'在需要暂停的地方使用此块
时间等待=0.5'秒
TimeStart=Timer()
时间经过=0
当时间超过
您能提供更多详细信息吗?这是一个外部进程吗?如果是的话,你怎么称呼它?DoEvents是你在长时间运行的进程中用来将控制权返回GUI的东西。我投票支持你,因为你提醒我,我多么高兴不再使用VB6:-)我投票支持你,因为你提供了这个网站所擅长的东西。易于找到、中肯且准确的建议@马特,我也很高兴不使用VB6,但我的客户需要它,所以我要加快步伐。多亏了克里斯,我不必花一个小时的时间去回忆10年前我忘记的“做事情”和睡眠的精确组合。谢谢你,克里斯,它就像一个符咒!那是VB.net而不是VB6