C # System.Diagnostics.Process: определить, сколько времени занял процесс компиляции C ++ - PullRequest
0 голосов
/ 13 сентября 2010
 Log("Starting to compile...\n");
        Process p = new Process();
        p.StartInfo.FileName = CompilationCommand;
        p.StartInfo.Arguments = SourceFileName;
        p.Start();
        Log("Compiling finished in " + (p.StartTime - p.ExitTime).Seconds + " seconds\n");

Этот код не работает. Как узнать, сколько времени было потрачено на компиляцию исходного файла C ++ с помощью компилятора g ++?

Ответы [ 3 ]

2 голосов
/ 13 сентября 2010

Вы можете использовать функцию WaitForExit в процессе, чтобы дождаться завершения процесса вместе с классом Секундомер , чтобы измерить время, которое потребовалось. Это приведет к тому, что у вас будет поток, ожидающий завершения процесса.

Stopwatch watch = Stopwatch.StartNew();
// start process as before
process.WaitForExit();
TimeSpan ts = watch.Elapsed;
1 голос
/ 13 сентября 2010

Посмотрите на реализацию события process.Exited.

В этой статье MSDN есть хороший пример:

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exittime.aspx

1 голос
/ 13 сентября 2010

Процессы выполняются асинхронно с другими процессами, но вы не дожидаетесь его завершения.К тому времени, когда ваш лог-вызов вернется, процесс еще может быть запущен.

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