Как измерить время, необходимое приложению для запуска в C #? - PullRequest
1 голос
/ 07 октября 2010

У меня есть приложение с графическим интерфейсом, которое загружает все свои плагины, прежде чем оно будет готово для использования пользователем.

Я хочу написать программу на 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);

Как я могу получить время запуска, которое я намереваюсь?

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Я говорю, что это очень сложно.

Как вы классифицируете загруженное и готовое приложение?Если есть способ (который я так не думаю), то это будет легко.

Но если приложение, которое вы загружаете, сигнализирует вам определенным образом (IPC / файлы / сеть), то вы можете захватитьэтот сигнал и сказать, что приложение загружено.В этом случае вы можете использовать таймер / секундомер / счетчик производительности.

Если вы можете изменить приложение, которое будет синхронизировано, то вы можете достичь разными способами.Если это внешнее по отношению к вам, я сомневаюсь, что есть какой-то простой способ.

0 голосов
/ 04 марта 2011

Process.WaitForInputIdle () отвечает на главное окно.Как только этот процесс запустится, он будет двигаться дальше.Есть ли в главном главном окне сообщение, которое вы можете посмотреть, указывающее, что приложение находится в состоянии готовности?Если это так, вы можете попробовать поместить или app в цикл, который присутствует или присутствует так много времени.Как уже было отмечено, вы, вероятно, также захотите посмотреть на класс Секундомер для вашего времени.

Еще пара мыслей, когда вы это делаете.Убедитесь, что этот процесс является единственным запущенным.Иногда вы можете получить некоторые конфликты.Возможно, вам придется поиграться, выяснив, что означает триггер, когда приложение полностью загружено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...