2012-09-05 18 views

Antwort

31

MSDN System.Diagnostics.Process

Wenn Sie wissen wollen jetzt, können Sie die HasExited Eigenschaft überprüfen.

var isRunning = !process.HasExited; 

Wenn es ein schneller Prozess ist, warte einfach darauf.

process.WaitForExit(); 

Wenn Sie ein bis im Hintergrund beginnen, abonnieren, nachdem an das Ereignis Exited EnableRaisingEvents auf true setzen.

process.EnableRaisingEvents = true; 
process.Exited += (sender, e) => { /* do whatever */ }; 
1

Weisen Sie dem Ereignis Exited einen Ereignishandler zu.

Es gibt Beispielcode in dieser MSDN-Verbindung - ich werde es hier nicht wiederholen.

2

Seien Sie sicher, dass Sie das Process Objekt speichern, wenn Sie den statischen Process.Start() Anruf (oder eine Instanz mit new erstellen) und dann entweder überprüfen Sie die HasExited Eigenschaft, oder abonnieren Sie das Exited Ereignis, je nach Ihren Bedürfnissen.

+0

Sie können die Process.Start (string) -Methode verwenden, da sie eine Instanz von Process zurückgibt. Sie können das Exited-Ereignis dieser Instanz verwenden. –

+0

@MikeMayer Guter Punkt; Ich vergesse immer, dass es so funktioniert. Wird bearbeiten. –

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"); 
} 
Verwandte Themen