In C# kann ich einen Prozess mitC# process.start, woher weiß ich, ob der Prozess beendet wurde?
startenprocess.start (program.exe);
Wie kann ich feststellen, ob das Programm noch läuft oder geschlossen ist?
In C# kann ich einen Prozess mitC# process.start, woher weiß ich, ob der Prozess beendet wurde?
startenprocess.start (program.exe);
Wie kann ich feststellen, ob das Programm noch läuft oder geschlossen ist?
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 */ };
Weisen Sie dem Ereignis Exited einen Ereignishandler zu.
Es gibt Beispielcode in dieser MSDN-Verbindung - ich werde es hier nicht wiederholen.
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.
Werfen Sie einen Blick auf die MSDN documentation for the Process class.
Insbesondere gibt es ein Ereignis (Exited), das Sie hören können.
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");
}
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. –
@MikeMayer Guter Punkt; Ich vergesse immer, dass es so funktioniert. Wird bearbeiten. –