2012-07-18 13 views
5

Estoy usando Windows Automation para probar mi UI y estoy abriendo y cerrando procesos. Quiero tener un WindowHandle válido, pero Process.WaitForInputIdle() no espera lo suficiente. Tengo un trabajo alrededor, pero no entiendo por qué WaitForInputIdle() no funciona.¿Por qué no funciona Process.WaitForInputIdle()?

A continuación se muestra una pequeña sección de código:

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

Parece una pregunta similar [aquí] (http://stackoverflow.com/questions/3247125/wait-for-wpf-app-to-load-after-starting-with-process-start). Es posible que deba llamar a Process.Refresh() en algún momento. – Chaser324

Respuesta

2

Como señaló Chaser324 en su comentario, la respuesta a mi pregunta se puede encontrar here.

Básicamente necesito agregar una llamada a Process.Refresh() dentro de mi ciclo 'while'.

Cuestiones relacionadas