C# Methode zum Neustarten (Konsolenanwendung)?
Guten Tag, ich suche einen Code denn ich in eine Methode packen kann, womit ich jedes mal wenn ich diese Methode aufrufe das Programm neustarte. Ich möchte mit absicht dafür keine Schleifen nutzen.
2 Antworten
Grob umschrieben:
Setz in C# ein kleines CMD-Script zusammen, das paar Sekunden wartet und danach die eigene Exe startet, ggf. mit bestimmten Parametern. Das startest Du dann (Process-Klasse) und beendest zügig die Anwendung.
Aber ganz ehrlich:
Mach das nicht, Du baust dir damit eklige Probleme, bei denen jeder Debugger und jedes andere Tool versagt. Außerdem bezweifle ich, dass es einen Anwendungsfall gibt, bei dem das tatsächlich sinnvoll ist und nicht auf viel bessere Weise umsetzbar ist.
Einzig sinnvoller Anwendungsfall: Die Anwendung soll sich selbst aktualisieren können.
PS:
Alternativ kannst Du einfach direkt mit Process die eigene Exe starten und dann sich selbst beenden.
Dann hast Du sie aber kurz doppelt offen, je nachdem, was Du machst, kann das Probleme verursachen, außerdem sieht's doof aus.
https://www.google.com/search?q=c%23+system+reboot
Sofern ein Administrator oder root das Auslösen eines Neustarts durch gewöhnliche Anwender untersagt hat, erfordert dies allerdings, dass das Restart-Progrämmchen mit Administratorrechten (Windows) bzw. root-Rechten (Linux, MacOS, Android) ausgestattet ist.
(In allen genannten Betriebssystemen braucht nur das Progrämmchen selbst erhöhte Rechte, nicht notwendigerweise das aufrufende Programm. Hierzu kann man bestimmte Einstellungen vornehmen, die von System zu System sehr unterschiedlich sein können.)
Ach so, das Programm selbst.
Application.Restart();
Leider findet sich auf der Microsoft-Seite hierzu kein Anwendungsbeispiel und auch kein Link dorthin. Allgemeine Suche: https://www.google.com/search?q=c%23+application+restart
Sorry, hab ich übersehen bzw. nicht dran gedacht, dass es zwischen Konsolen- und Forms-Anwendungen ein paar völlig unverständliche Unterschiede gibt.
https://www.google.com/search?c%23+restart+console+application
Du könntest z. B. ein Hilfsprogramm aufrufen und das laufende Programm beenden. Das Hilfsprogramm wartet, bis der laufende Prozess des aktuellen Programms beendet ist und ruft dann seinerseits das aktuelle Programm (mit den aktuellen oder geänderten Parametern) auf und beendet sich dann ebenfalls selbst.
Oder das Programm ruft sich direkt selbst auf. Erfordert aber, dass es mehr als eine Instanz zulässt.
(Wenn die Aufrufparameter geändert werden sollen, ist der Neuaufruf m. W. der einzige Weg. Aber die Parameter werden sinnvollerweise ohnehin in Variablen jeweils geeigneten Typs gespeichert.)
Oder du bindest das Paket mit dem Application-Objekt ein.
Nein ich meine um das Programm an sich von vorne zu starten das ich halt wieder nach aufrufen der Methode wieder zum Anfang des Programms springe.