1

我有一个 GUI 应用程序需要一段时间来加载它的所有插件,然后才能被用户使用。

我想编写一个 C# 程序来测量此应用程序启动所需的时间。我认为 Process.WaitForInputIdle() 方法可以解决问题,但事实并非如此。一旦进程开始,它就会退出。

我现在拥有的是这样的:

DateTime startTime = DateTime.Now;

Process myAppUnderTest = Process.Start("C:\\Program Files\\My App\app_under_test.ext");

myAppUnderTest.WaitForInputIdle();   //Wait until the application is idle.

DateTime endTime = DateTime.Now;

int elapsedTimeInSecs = endTime.Subtract(startTime).Seconds;

Console.WriteLine("Start up time (sec): {0}", elapsedTimeInSecs);

如何获得我想要的启动时间?

4

2 回答 2

2

我说这非常困难。

您如何对已加载并准备就绪的应用程序进行分类?如果有办法(我不这么认为),那就很容易了。

但是,如果您正在加载的应用程序以某种方式(IPC/文件/网络)向您发出信号,那么您可以捕获该信号并说应用程序已加载。在这种情况下,您可以使用计时器/秒表/性能计数器。

如果您可以修改要定时的应用程序,那么您可以通过各种方式实现。如果它对你来说是外部的,我怀疑有什么简单的方法。

于 2010-10-07T09:06:31.937 回答
0

Process.WaitForInputIdle() 响应主窗口。一旦该过程启动,它将继续进行。您可以查看的主窗口上是否有一条消息表明该应用程序处于就绪状态?如果是这样,您可以尝试将或应用程序放入存在或已经过去很长时间的循环单元中。如前所述,您可能还希望查看 Stopwatch 类以了解您的时间。

当你这样做时,还有一些其他的想法。确保此进程是唯一正在运行的进程。否则,有时您可能会遇到一些冲突。您可能需要弄清楚当应用程序完全加载时触发器会告诉您什么。

于 2011-03-04T06:57:15.133 回答