2012-09-05 76 views

Respuesta

31

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 */ }; 
1

Asigna un controlador de eventos al evento Exited.

Hay un código de muestra en ese enlace de MSDN - No lo repetiré aquí.

2

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.

+0

Puede utilizar el método Process.Start (cadena) ya que devuelve una instancia de Process. Puede usar el evento Exited de esa instancia. –

+0

@MikeMayer Buen punto; Siempre me olvido que funciona así. Editaré –

9
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"); 
} 
Cuestiones relacionadas