次のコード行を実行する前に終了したいVB6の長時間実行プロセスがあります。どうやってやるの?内蔵機能?待機時間を制御できますか?
簡単な例:
Call ExternalLongRunningProcess
Call DoOtherStuff
'DoOtherStuff'を遅らせるにはどうすればよいですか?
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
Nescioの answer (DoEvents)は機能しますが、アプリケーションは1つのCPUを100%使用します。スリープするとUIが応答しなくなります。必要なのは2つの組み合わせであり、最も効果的と思われる魔法の組み合わせは次のとおりです。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
While IsStillWaitingForSomething()
DoEvents
DoEvents
Sleep(55)
Wend
なぜ2つのDoEventがあり、1つが55ミリ秒スリープするのですか? 55ミリ秒のスリープは、VB6が処理できる最小のスライスであり、超応答性が必要な場合(APIではなく、アプリケーションが外部イベント、SendMessage、Interuptsなどに応答している場合)に2つのDoEventを使用する必要がある場合があります。 )。
コードを2つのプロセスに分割します。最初のプロセスを実行してから、「長時間実行プロセス」を実行してから、2番目のプロセスを実行します。
現在のプロセスの途中で長時間実行プロセスを実行し、完了するのを待ちます。
.net Framework system.dllなどをプロジェクト参照に追加して、これを実行できるようにしたいと思います。
Dim ALongTime As Integer = 2000
System.Threading.Thread.Sleep(ALongTime)
...毎回。私のマシンにはVB6とVB.net2008があり、非常に異なるIDEを切り替えるのは常に困難です。