Tengo una aplicación que hace
Process.Start()
para iniciar otra aplicación 'ABC'. Quiero esperar hasta que la aplicación finalice (el proceso muere) y continuar con mi ejecución. ¿Cómo puedo hacerlo?
Puede haber varias instancias de la aplicación 'ABC' ejecutándose al mismo tiempo.

Respuestas:
Creo que solo quieres esto:
Vea la página de MSDN para el método. También tiene una sobrecarga donde puede especificar el tiempo de espera, por lo que potencialmente no está esperando para siempre.
fuente
Uso
Process.WaitForExit? ¿O suscribirse alProcess.Exitedevento si no desea bloquear? Si eso no hace lo que desea, bríndenos más información sobre sus requisitos.fuente
WaitForExitprimero ... en algunos casos, es posible que desee ejecutar más código cuando algo termine, pero eso no significa que deba bloquear el hilo actual.Process.Exitedevento, creo que debe configurar el proceso de antemano estableciéndoloProcess.EnableRaisingEventsen verdadero. Sin embargo, teniendo en cuenta que esta pregunta tiene más de tres años, puede ser queProcess.EnableRaisingEventsno era una cosa en el momento en que se hizo.Process.Exitedevento. ¡Gracias! +1 para completarHago lo siguiente en mi solicitud:
Hay algunas características adicionales allí que pueden serle útiles ...
fuente
Puede usar esperar para salir o puede capturar la propiedad HasExited y actualizar su IU para mantener al usuario "informado" (gestión de expectativas):
fuente
Tuve un caso en el
Process.HasExitedque no cambió después de cerrar la ventana perteneciente al proceso. EntoncesProcess.WaitForExit()tampoco funcionó. Tuve que controlarProcess.Respondingque fue falso después de cerrar la ventana así:Quizás esto ayude a alguien.
fuente
Process.WaitForExit debería ser justo lo que estás buscando, creo.
fuente
En referencia al ejemplo de Microsoft: [ https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.enableraisingevents?view=netframework-4.8]
Lo mejor sería establecer:
de lo contrario, el Código será bloqueado. Además, no se necesitan propiedades adicionales.
fuente
Como dice Jon Skeet, use el
Process.Exited:fuente
Prueba esto:
fuente