2015-05-13 23 views
0

我正在寫一個UI自動化客戶端,所以我沒有獲得像裝形式的典型方法等如何判斷一個應用程序正忙

基本上我想要的方式來確定是否被測試的應用程序正在工作或閒置。

我已經試過這樣:

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

這不會阻止,即使明確了應用工作。

我正在尋找一種可靠的方法來確定應用程序是否忙碌。在這種情況下,它是一個.net應用程序。

在此先感謝。

+1

你是如何定義閒置?我不認爲我有答案,但在思考可能在不同線程上始終運行事務的多線程應用程序時,想到這個問題。我會假設你的意思是UI線程沒有被你的示例代碼阻塞。這是一個正確的假設嗎? –

+0

@Steve,應用程序是多線程的,這些線程是進程的子進程。我理想地尋找一種託管/或非託管方式來確定所有工作已完成。 –

+0

如果您嘗試自動化特定應用程序而不創建通用應用程序,那麼可能會在您的代碼中命名工作線程,然後查詢它們的存在即可。 https://msdn.microsoft.com/en-us/library/581hfskb.aspx –

回答

0

您可以訪問System.Diagnostic.Process實例的布爾屬性Responding來檢查進程當前是否響應。 如果一個進程的負載很高,並且工作進程在工作線程中沒有分離,那麼這個值就是FALSE。 但是這不是一個安全的方式...

另一種方式可能是監視當前的CPU負載的過程。

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

相關問題