2012-04-04 147 views
2

在我的VB.NET應用程序中,我啓動了一個應用程序並引入了20秒的等待延遲。但是對於加載第二個應用程序,時間是不同的。是否有可能有while循環一做,類似於結構如下圖所示:等待處理

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

回答

2

你看Process.WaitForInputIdle()?它正在等待應用程序爲其用戶界面輸入消息循環(創建一個窗口)。

編輯:參見主題here

1

你要面臨的最大障礙是如何子進程進行通信,它已經準備好了MSDN描述。確定是否加載了另一個進程的窗口最好是不穩定的。如果你決定在一些更明確的

  • 創建一個特定的註冊表項
  • 寫值到預定的文件
  • Windows消息

一旦你決定上那是相當很乾淨多了直向迴路

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

如前所述,您需要選擇機械sm溝通「加載」,併成爲您的IsProcessReady函數

+0

這是假設他在控制其他應用程序。在這種情況下,我認爲IPC事件是解決這個問題的更好方法。魔術鍵寫入註冊表或文件很容易在應用程序崩潰等錯誤。 – aKzenT 2012-04-04 21:36:58

+1

@aKzenT好點,加了一點關於使用IPC – JaredPar 2012-04-04 21:42:42