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