2015-05-13 2 views
0

Я пишу клиент автоматизации пользовательского интерфейса, и поэтому у меня нет доступа к типичным методам, как форма загружена, и т.д.Как сказать, если приложение занято

В основном я хочу способ определить, если тестируемое приложение работает или находится в режиме ожидания.

Я попытался это:

Process[] localByName = Process.GetProcessesByName("AUT"); 
localByName[0].WaitForInputIdle(); 

Это не блок, хотя ясно, что приложение работает.

Я ищу верный способ оплаты, чтобы определить, занято ли приложение или нет. В этом случае это приложение .net.

Заранее спасибо.

+1

Как вы определяете себя как? Я не думаю, что у меня есть ответ, но этот вопрос приходит на ум, когда мы думаем о многопоточных приложениях, которые могут работать на разных потоках все время. Я бы предположил, что вы имеете в виду, что поток пользовательского интерфейса не заблокирован из вашего образца кода. Это правильное предположение? –

+0

@Steve, приложение многопоточное, эти потоки являются дочерними процессами. Я идеально ищут управляемый/неуправляемый способ определить, все ли выполнено. –

+0

Если вы пытаетесь автоматизировать конкретное приложение, а не создавать приложение общего назначения, возможно, назовем рабочие потоки в вашем коде и затем запросить их существование. https://msdn.microsoft.com/en-us/library/581hfskb.aspx –

ответ

0

Вы можете получить доступ к логическому свойству Ответ на экземпляр System.Diagnostic.Process, чтобы проверить, отвечает ли этот процесс в данный момент. Если процесс имеет высокую нагрузку, и рабочий процесс не разделен в рабочей нити, чем обычно, эта оценка FALSE. Но это не реально безопасный способ ...

Другим способом может быть мониторинг текущей загрузки процессора.

Stackoverflow 9259772: Getting CPU usage of a Process in C sharp

Смежные вопросы