En C#, puedo iniciar un proceso conC# process.start, ¿cómo sé si el proceso finalizó?
process.start (program.exe);
¿Cómo puedo saber si el programa aún se está ejecutando o si se cerró?
En C#, puedo iniciar un proceso conC# process.start, ¿cómo sé si el proceso finalizó?
process.start (program.exe);
¿Cómo puedo saber si el programa aún se está ejecutando o si se cerró?
MSDN System.Diagnostics.Process
Si quieres saber ahora , se puede comprobar la propiedad HasExited
.
var isRunning = !process.HasExited;
Si se trata de un proceso rápido, solo aguarde.
process.WaitForExit();
Si vas a empezar una en el fondo, suscribirse al evento de salidos después de establecer EnableRaisingEvents true.
process.EnableRaisingEvents = true;
process.Exited += (sender, e) => { /* do whatever */ };
Asigna un controlador de eventos al evento Exited.
Hay un código de muestra en ese enlace de MSDN - No lo repetiré aquí.
Asegúrese de guardar el objeto Process
si se utiliza el Process.Start()
llamada estática (o crea una instancia con new
), y luego o bien comprueba la propiedad HasExited
, o se suscribe al evento Exited
, dependiendo de sus necesidades.
Eche un vistazo a MSDN documentation for the Process class.
En particular, hay un evento (Exited) que puede escuchar.
Process p = new Process();
p.Exited += new EventHandler(p_Exited);
p.StartInfo.FileName = @"path to file";
p.EnableRaisingEvents = true;
p.Start();
void p_Exited(object sender, EventArgs e)
{
MessageBox.Show("Process exited");
}
Puede utilizar el método Process.Start (cadena) ya que devuelve una instancia de Process. Puede usar el evento Exited de esa instancia. –
@MikeMayer Buen punto; Siempre me olvido que funciona así. Editaré –