Application.Exit
-
21-08-2019 - |
Frage
Ich bin mit VSTS 2008 + .NET 3.5 + C # Windows Forms-Anwendung zu entwickeln. Meine Verwirrung ist, scheint Application.Exit nicht Anwendung zwingt zu beenden? Wenn nicht, welche Methode soll ich anrufen Anwendung beenden machen?
EDIT 1:
Normalerweise ist die wichtigste Methode, wie das ist, wie Hauptfunktion ordnungsgemäß zu beenden, ohne Environment.Exit Aufruf?
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
Console.WriteLine (ex.Message);
}
}
Vielen Dank im Voraus, George
Lösung
Application.Exit
wirklich fragt nur die Nachrichtenschleife sehr sanft.
Wenn Sie die App verlassen wollen, ist der beste Weg anmutig es aus Main
zu machen, und schließen sauber alle zusätzlichen Nicht-Hintergrund-Threads.
Wenn Sie wollen, brutal sein ... Environment.Exit
oder Environment.FailFast
? Hinweis Das ist hart -. Etwa die gleiche wie Ihren eigenen Process
töten
Andere Tipps
Versuchen Sie Folgendes:
Process.GetCurrentProcess().Kill();
Environment.Exit
funktioniert nicht mit WinForms und Environment.FailFast
wirft seine eigene Ausnahme.
Wenn Ihre Anwendung ordnungsgemäß nicht verlassen, wenn Sie Application.Exit
nennen es (natürlich) ist etwas, das sie daran hindert, dies zu tun. Dies kann alles von einem Formular Einstellung e.Cancel = true
im FormClosing
angegeben ist, zu einem Thread, keinen Hintergrund-Thread ist, die noch läuft. Ich würde empfehlen Ihnen sorgfältig genau recherchieren, was es ist, dass Ihr Prozess am Leben hält, und schließen Sie, dass in einer schönen Weise. Das sollte Ihre Anwendung schön als auch in der Nähe machen.
Normalerweise in einer WinForms-Anwendung, sollte es ausreichend sein, die Hauptform zu schließen.
ich
if (System.Windows.Forms.Application.MessageLoop)
{
// Use this since we are a WinForms app
System.Windows.Forms.Application.Exit();
}
else
{
// Use this since we are a console app
System.Environment.Exit(1);
}
http://geekswithblogs.net/mtreadwell/archive/ 2004/06/06 / 6123.aspx
Ich hatte das gleiche Problem, als ich entdeckte ein neues Formular / Fenster innerhalb des Programms öffnen und HIDING nur diese zweite Form (nicht zu schließen), würde die Hauptform verhindern ordnungsgemäß über Application.Exit verlassen ();
Es gibt zwei Lösungen in diesem Fall. Zunächst ist einfach zu verwenden Close () auf der Hauptform statt Application.Exit (). Zweite Lösung ist den folgenden Code zu verwenden:
if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose();
fand ich, dass einfach alles, was Sie tun müssen, ist statt Application.Exit und alle tun, die Sie müssen nur tun ist, setzen in Ende Einfach genug, um die End-Befehl schließt es