Vb.net 等待进程

Vb.net 等待进程,vb.net,process,Vb.net,Process,在我的VB.NET应用程序中,我启动了一个应用程序,并引入了20秒的等待延迟。但是对于加载第二个应用程序,时间是变化的。是否可以有一个do-while循环,类似于如下所示的结构: Start the application1 do { sleep(2seconds) }until(Application1 Window is loaded 您是否查看了Process.WaitForInputIdle()?它一直在等待应用程序进入其用户界面的消息循环(创建了一个窗口) 编辑:请参阅主题的

在我的VB.NET应用程序中,我启动了一个应用程序,并引入了20秒的等待延迟。但是对于加载第二个应用程序,时间是变化的。是否可以有一个do-while循环,类似于如下所示的结构:

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

您是否查看了
Process.WaitForInputIdle()
?它一直在等待应用程序进入其用户界面的消息循环(创建了一个窗口)


编辑:请参阅主题的MSDN说明

您将要面临的最大障碍是子进程如何传达它已准备就绪。确定是否加载了另一个进程的窗口充其量是不可靠的。如果你决定做更明确的事情,那就更干净了

  • 创建特定的注册表项
  • 将值写入预定文件
  • Windows消息
一旦你决定了这一点,那么它就是相当直接的循环

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

如前所述,您需要选择一种机制来“加载”通信,这将成为您的
IsProcessReady
函数

这是假设他控制了另一个应用程序。在这种情况下,我认为IPC事件是更好的处理方法。在应用程序崩溃等情况下,将魔术键写入注册表或文件容易出错。