C # process.start, comment savoir si le processus est terminé?

En C #, je peux démarrer un processus avec

process.start (program.exe);

Comment savoir si le programme est toujours en cours d’exécution ou s’il est fermé?

MSDN System.Diagnostics.Process

Si vous voulez savoir tout de suite , vous pouvez vérifier la propriété HasExited .

 var isRunning = !process.HasExited; 

Si le processus est rapide, attendez simplement.

 process.WaitForExit(); 

Si vous en démarrez en arrière-plan, abonnez-vous à l’événement Exited après avoir défini EnableRaisingEvents sur true.

 process.EnableRaisingEvents = true; process.Exited += (sender, e) => { /* do whatever */ }; 
 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"); } 

Veillez à enregistrer l’object Process si vous utilisez l’appel statique Process.Start() (ou créez une instance avec new ), puis vérifiez la propriété HasExited ou souscrivez à l’événement Exited , selon vos besoins.

Affectez un gestionnaire d’événement à l’événement terminé .

Ce lien MSDN contient un exemple de code – je ne le répéterai pas ici.

Consultez la documentation MSDN pour la classe Process .

En particulier, il existe un événement ( Exited ) que vous pouvez écouter.