Freitag, 2. März 2012

Windows Forms- und Konsolen Anwendungen neu starten

In diesem Post möchte ich kurz zeigen, wie man eine C# Anwendung neu starten kann.
Für Windows Forms-Anwendungen reicht hierfür ein einziger Befehl:
Application.Restart();

Was eigentlich dahinter steckt, oder falls jemand diesen Vorgang noch etwas "personalisieren" will, ist folgendes:
Die aktuelle Anwendung wird als eigener Prozess neu gestartet und die alte Instanz wird geschlossen, somit lautet der Code für Windows Forms-Anwendungen:

// neuen Prozess erzeugen
System.Diagnostics.Process NewInstance = new System.Diagnostics.Process();
// diesen mit Anwendung verknüpfen
NewInstance.StartInfo.FileName = Application.ExecutablePath;
// neue Instanz starten
NewInstance.Start();
// aktuelle Instanz beenden
Application.Exit();

Diese Methode ist besonders für Konsolenanwendungen interessant, da bei diesen kein Befehl Application.Restart() verfügbar ist.
Obiger Code funktioniert auch bei diesen einwandfrei, allerdings muss eine Zeile angepasst werden, da nämlich Application.ExecutablePath logischwerweise auch nicht verfügbar ist:
NewInstance.StartInfo.FileName = System.Threading.Thread.GetDomain().BaseDirectory + System.Threading.Thread.GetDomain().FriendlyName; (so fragt man über die Klasse Threading Anwendungspfad und Anwendungsname ab)

1 Kommentar:

  1. Man kann den Pfad zur Anwendung auch leichter abfragen: Assembly.GetExecutingAssembly().Location

    AntwortenLöschen