2

在我的 VB.NET 应用程序中,我启动了一个应用程序并引入了 20 秒的等待延迟。但是对于加载第二个应用程序,时间会有所不同。是否可以有一个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 回答