web-dev-qa-db-ja.com

Visual Basic(VB6)でコードの実行を遅らせるにはどうすればよいですか?

次のコード行を実行する前に終了したいVB6の長時間実行プロセスがあります。どうやってやるの?内蔵機能?待機時間を制御できますか?

簡単な例:

Call ExternalLongRunningProcess
Call DoOtherStuff

'DoOtherStuff'を遅らせるにはどうすればよいですか?

10
Ray Vega

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
12
Nescio

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を使用する必要がある場合があります。 )。

16
Kris Erickson

シェル化されたプロセスがいつ終了したかを判断する方法:

外部プロセスを呼び出す場合は、事実上、非同期で呼び出すことになります。外部プロセスが完了するまで待機する方法については、上記のMSサポートドキュメントを参照してください。

2
Sean Gough

コードを2つのプロセスに分割します。最初のプロセスを実行してから、「長時間実行プロセス」を実行してから、2番目のプロセスを実行します。

0
EndangeredMassa

現在のプロセスの途中で長時間実行プロセスを実行し、完了するのを待ちます。

0
EndangeredMassa

.net Framework system.dllなどをプロジェクト参照に追加して、これを実行できるようにしたいと思います。

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

...毎回。私のマシンにはVB6とVB.net2008があり、非常に異なるIDEを切り替えるのは常に困難です。

0
RetroDev