Question

J'utilise VSTS 2008 + .Net 3.5 + C # pour développer une application Windows Forms. Ma confusion est, semble Application.Exit ne force pas l'application à se terminer? Sinon, quelle méthode devrais-je appeler pour que l'application se termine?

EDIT 1:

Normalement, la méthode principale est la suivante: comment quitter la fonction Main sans appeler Environment.Exit?

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        }
        catch (Exception ex)
        {
            Console.WriteLine (ex.Message);
        }
    }

merci d'avance, George

Était-ce utile?

La solution

Application.Exit demande simplement très doucement à la boucle de messages.

Si vous souhaitez que votre application quitte l'application, la meilleure solution consiste à la séparer de Main et de fermer proprement tout thread supplémentaire n'appartenant pas à l'arrière-plan.

Si vous voulez être brutal ... Environment.Exit ou Environment.FailFast ? remarque : c'est dur - c'est à peu près la même chose que de tuer votre propre Process.

Autres conseils

Essayez ce qui suit:

Process.GetCurrentProcess().Kill();

Environment.Exit ne fonctionne pas avec Winforms et Environment.FailFast génère sa propre exception.

Si votre application ne se ferme pas correctement lorsque vous appelez Application.Exit, il y a (évidemment) quelque chose qui l'empêche de le faire. Cela peut être n'importe quoi, depuis un paramètre de formulaire e.Cancel = true dans l'événement FormClosing jusqu'à un fil qui n'est pas un fil en arrière-plan en cours d'exécution. Je vous conseillerais de rechercher soigneusement ce qui maintient votre processus en vie et de le clôturer de manière agréable. Cela devrait également vous permettre de bien fermer votre candidature.

Généralement, dans une application Winforms, il devrait suffire de fermer le formulaire principal.

j'utilise

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);
}

à partir de http://geekswithblogs.net/mtreadwell/archive/ 2004/06/06 / 6123.aspx

J'ai eu le même problème lorsque j'ai découvert l'ouverture d'un nouveau formulaire / fenêtre dans le programme, et seulement HIDING ce second formulaire (sans le fermer) empêcherait le formulaire principal de quitter correctement via Application.Exit ();

Il existe deux solutions dans ce cas. La première consiste simplement à utiliser Close () sur le formulaire principal au lieu de Application.Exit (). La deuxième solution consiste à utiliser le code suivant:

if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose();

J'ai découvert que tout ce que vous aviez à faire était de faire application.exit et tout ce que vous aviez à faire, c'était de le mettre en place. Fin Assez simplement, la commande End le ferme

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top