3

我有一段代码,它基本上使用Process.Start()方法调用应用程序。

ProcessStartInfo psi = new ProcessStartInfo(strAppPath);
psi.WindowStyle = ProcessWindowStyle.Maximized | ProcessWindowStyle.Normal;
//Starts the xyz application process.
Process xyzProcess = Process.Start(psi);
xyzProcess.WaitForInputIdle();

尽管该过程在几秒钟内启动,但应用程序可能需要一些时间才能完全初始化。即我的应用程序xyz可能需要 5 - 10 秒,具体取决于它所运行的机器(即在更快的 pc 上少于 5 秒,在较慢的 pc 上超过 10 秒)

我的问题:有没有办法跟踪这个?通过轮询一些属性,而不是等待某个时间使用Thread.Sleep(ms).

我徒劳地尝试使用以下方法

  1. 用一个小的轮询xyzProcess.Responding属性thread.sleep

  2. 肮脏的轮询方法,xyzProcess.MainWindowTitle直到它返回一些非空值。

  3. xyzProcess.WaitForInputIdle(sleeptime);

请帮忙

谢谢

4

1 回答 1

0

您是在等待应用程序初始化,还是只是在等待应用程序执行某些操作?

如果只是应用程序需要“做某事”,那么您可以不等待退出吗?

xyzProcess.WaitForExit();
于 2012-07-07T09:14:45.190 回答