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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top