VB.NET のアプリケーションで、アプリケーションを開始し、20 秒の待機遅延を導入しました。ただし、2 番目のアプリケーションをロードする場合は、時間が異なります。以下に示す構造のような do while ループを使用することは可能ですか。
Start the application1
do {
sleep(2seconds)
}until(Application1 Window is loaded
見ましたProcess.WaitForInputIdle()
か?アプリケーションがユーザー インターフェイスのメッセージ ループに入る (ウィンドウを作成する) まで待機します。
編集:ここのトピックに関する MSDN の説明を参照してください。
直面する最大の障害は、子プロセスが準備ができていることを伝える方法です。別のプロセスのウィンドウがロードされているかどうかを判断することは、せいぜい不安定です。より決定的なものを決定すると、はるかにクリーンになります
あなたがそれを決定したら、それはかなり単純なループです
Dim span = TimeSpan.FromSeconds(20)
Thread.Sleep(span)
Do While Not IsProcessReady()
Thread.Sleep(span)
Loop
前に述べたように、「ロードされた」通信メカニズムを選択する必要があり、それがIsProcessReady
機能になります