2012-04-04 109 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