Application.Exit
-
21-08-2019 - |
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
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