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);
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