2012-07-18 2 views
5

Windows Automation을 사용하여 UI를 테스트하고 프로세스를 열고 닫는 중입니다. 유효한 WindowHandle을 갖고 싶지만, Process.WaitForInputIdle()은 충분히 오래 기다리지 않습니다. 해결 방법이 있지만 WaitForInputIdle()이 작동하지 않는 이유를 이해할 수 없습니다.Process.WaitForInputIdle()이 작동하지 않는 이유는 무엇입니까?

자신의 의견에 Chaser324에서 언급 한 바와 같이
Process = new Process 
       { 
       StartInfo = 
       { 
        WorkingDirectory = directory, 
        FileName = EXECUTABLE_FILE_NAME 
       } 
       }; 

Process.Start(); 

//Process.WaitForInputIdle() doesn't work, 
//so will use a while loop until MainWindowHandle isn't IntPtr.Zero anymore, 
//or until 10 seconds have elapsed 

int count = 0; 

while (Process.MainWindowHandle == IntPtr.Zero && count<100) 
{ 
    count++; 
    Thread.Sleep(100); 
} 

AppElement = AutomationElement.FromHandle(Process.MainWindowHandle); 
+2

질문 [여기] (http://stackoverflow.com/questions/3247125/wait-for-wpf-app-to-load-after-starting-with-process-start)와 비슷한 것으로 보입니다. 어떤 시점에서 Process.Refresh()를 호출해야 할 수도 있습니다. – Chaser324

답변

2

, 내 질문에 대한 대답은 here을 찾을 수 있습니다

다음은 작은 코드 싹둑입니다.

기본적으로 내 'while'루프 내부에서 Process.Refresh()에 대한 호출을 추가해야합니다.

관련 문제