我有一个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);
如何获得我想要的启动时间?
答案 0 :(得分:2)
我说这很难。
如何对已加载并准备好的应用程序进行分类?如果有办法(我不这么认为),那就很容易了。
但是,如果您正在加载的应用程序以某种方式(IPC /文件/网络)发出信号,那么您可以捕获该信号并说明该应用已加载。在这种情况下,您可以使用计时器/秒表/性能计数器。
如果您可以修改定时应用,那么您可以通过各种方式实现。如果它在你的外部,我怀疑有任何简单的方法。
答案 1 :(得分:0)
Process.WaitForInputIdle()响应主窗口。一旦该过程启动,它将继续前进。您可以在主窗口上看到一条消息,指示应用程序处于就绪状态吗?如果是这样,你可以尝试在存在的循环单元中放置或应用程序或经过这么多时间。正如已经指出的那样,您可能还想查看秒表课程的时间安排。
当你这样做时,还有其他一些想法。确保此进程是唯一正在运行的进程。否则你有时会遇到一些冲突。你可能需要玩arround,找出触发器在应用程序满载时告诉你的内容。