tablas soporta segundo por optimizar lentas grandes cuantas consultas con c# .net system.diagnostics

c# - soporta - ¿Mi proceso está en espera de entrada?



optimizar consultas sql server (2)

Estoy usando la clase de proceso para ejecutar un exe.

El exe es una aplicación de consola de terceros que no controlo.

Deseo saber si el proceso está esperando una entrada en la línea de comandos.

Si hace alguna diferencia, tengo la intención de eliminar la aplicación en caso de que esté esperando una entrada.

Hay eventos adecuados para cuando hay salida del programa en espera de ser leído, pero no puedo ver nada similar para cuando el proceso está esperando pacientemente la entrada.

ProcessStartInfo info = new ProcessStartInfo(); info.FileName = "myapp.exe"; info.CreateNoWindow = true; info.UseShellExecute = false; info.RedirectStandardError = true; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; process.StartInfo = info; process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit();

¿Cómo detecto que mi proceso está en espera de entrada?


Dependiendo de lo que esté haciendo exactamente el proceso de terceros, podría intentar sondear los estados de sus hilos:

foreach(ProcessThread thread in process.Threads) if (thread.ThreadState == ThreadState.Wait && thread.WaitReason == ThreadWaitReason.UserRequest) process.Kill();

En su defecto ... puedes intentar

process.StandardInput.Close();

después de llamar a Inicio (), supongo que se generará una excepción en el proceso secundario si se intenta leer desde una entrada estándar.