2010-10-25 22 views
11

Was ist der beste Weg, eine Anwendungsinstanz zu beenden? Ich bin mir bewusst, dieser drei Methoden:.Die beste Methode zum Beenden der Anwendungsinstanz

Application.Exit()

Environment.Exit (0)

Process.GetCurrentProcess() kill()

Kann mir jemand sagen, was ist besser oder wenn jeder der oben genannten wäre angemessen?

Antwort

19

Richtlinien von C# faq:

System.Windows.Forms.Application.Exit() - Informiert alle Nachrichten Pumpen, dass sie beenden müssen, und schließt dann alle Anwendungsfenster, nachdem die Nachrichten verarbeitet worden sind. Diese Methode stoppt alle laufenden Nachrichtenschleifen für alle Threads und schließt alle Fenster der Anwendung. Diese Methode erzwingt das Beenden der Anwendung nicht. Die Exit-Methode wird normalerweise innerhalb einer Nachrichtenschleife aufgerufen und erzwingt die Ausführung von Run. Um eine Nachrichtenschleife nur für den aktuellen Thread zu beenden, rufen Sie ExitThread auf. Dies ist der Aufruf, den Sie verwenden müssen, wenn Sie eine WinForms-Anwendung ausführen. Als allgemeine Richtlinie verwenden Sie diesen Aufruf, wenn Sie System.Windows.Forms.Application.Run aufgerufen haben.

System.Environment.Exit (exitCode) - Beendet diesen Prozess und gibt dem zugrunde liegenden Betriebssystem den angegebenen Beendigungscode. Dieser Aufruf erfordert, dass Sie SecurityPermissionFlag.UnmanagedCode-Berechtigungen haben. Wenn dies nicht der Fall ist, tritt ein SecurityException-Fehler auf. Dies ist der Aufruf, den Sie verwenden müssen, wenn Sie eine Konsolenanwendung ausführen.

Das Töten des Prozesses wird wahrscheinlich nicht empfohlen.

+0

Danke, viele gute Infos. – Eaton

+5

Es ist erwähnenswert, dass 'Process.GetCurrentProcess(). Kill()' ist der richtige Weg, um eine Anwendung zu beenden, wenn Sie es sofort stoppen müssen. Sie möchten nicht auf eine Handelsanwendung warten, die fehlerhafte Aufträge ausgibt, um sie ordnungsgemäß zu beenden. Du willst diesen Welpen tot töten. – 0b101010

0

Nur eine schnelle Antwort, ich würde immer die "Exit" -Option verwenden, wenn es funktioniert. Es ist ein viel sauberer Weg, es zu tun.

Das "Kill" eines Prozesses bedeutet genau das, und daher kann das Programm keine Bereinigungsarbeiten ausführen (z. B. Speichern der Konfiguration, Speichern anderer Dateien usw.). Wenn Sie nicht wissen, was der Prozess ist und dass es keine "Bereinigung" zu tun hat, und selbst dann, ist es nur sauberer, "Exit" zu verwenden.

Es scheint keinen Unterschied zwischen den beiden "Exit" -Optionen zu geben, die Sie erwähnen, ich wette, dass der erste einfach implizit den Nullwert übergibt.

+0

Ich sehe, danke für die Info. Dies ist eine kritische Sicherheitsüberprüfung, daher wäre es wahrscheinlich besser für mich, sie zu beenden, da ich nicht möchte, dass die App alles ausführt, wenn sie diese Prüfung nicht besteht. – Eaton

2

Wenn dies eine Windows Forms-Anwendung ist, verwenden Sie Application.Exit(). Das wird das Programm schön schließen.

-4
foreach (Process proc in Process.GetProcessesByName("WindowsFormsApplication1.vshost")) 
     { 

      proc.Kill(); 

     } 
+0

Dies beantwortet die Frage nicht. – nphx

Verwandte Themen