2

VB.NET のアプリケーションで、アプリケーションを開始し、20 秒の待機遅延を導入しました。ただし、2 番目のアプリケーションをロードする場合は、時間が異なります。以下に示す構造のような do while ループを使用することは可能ですか。

Start the application1
do {
    sleep(2seconds)
}until(Application1 Window is loaded
4

2 に答える 2

2

見ましたProcess.WaitForInputIdle()か?アプリケーションがユーザー インターフェイスのメッセージ ループに入る (ウィンドウを作成する) まで待機します。

編集:ここのトピックに関する MSDN の説明を参照してください。

于 2012-04-04T21:33:16.593 に答える
1

直面する最大の障害は、子プロセスが準備ができていることを伝える方法です。別のプロセスのウィンドウがロードされているかどうかを判断することは、せいぜい不安定です。より決定的なものを決定すると、はるかにクリーンになります

  • 特定のレジストリ キーの作成
  • 所定のファイルへの値の書き込み
  • Windows メッセージ

あなたがそれを決定したら、それはかなり単純なループです

Dim span = TimeSpan.FromSeconds(20)
Thread.Sleep(span)
Do While Not IsProcessReady()
  Thread.Sleep(span)
Loop

前に述べたように、「ロードされた」通信メカニズムを選択する必要があり、それがIsProcessReady機能になります

于 2012-04-04T21:34:12.787 に答える