2011-07-26 5 views
1

Afin de ne pas montrer une forme en C# .NET lors du premier démarrage de l'application, j'ai ceci:Comment quitter cette application avec élégance?

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     SomethingForm frmSomething = new SomethingForm(); 

     Application.Run(); 
    } 

Il est une application d'une forme et SomethingForm est la forme mère qui a une Button de sortie qui appelle actuellement le Application.ExitThread(); suivant. Ce bouton est le seul moyen de quitter l'application.

Maintenant, je sais que ce n'est pas une terminaison gracieuse, mais c'était la seule façon de le faire fonctionner lors des tests. Cela pose maintenant quelques problèmes en laissant l'icône dans la barre d'état système après la sortie.

Alors, comment terminer cette application GRACEMENT?

Répondre

3

Appelez simplement this.Close() dans le formulaire. En supposant que c'est le seul formulaire, l'application devrait quitter gracieusement.

Un moyen légèrement moins gracieux consiste à utiliser Application.Exit(). Le problème avec ceci est que les événements de clôture de formulaire ne sont pas levés (corrigés après .NET 1.1).

+0

+1. Il va quitter s'il n'y a pas d'autres threads de premier plan actifs. –

+0

Votre avertissement Application.Exit() concernant la fermeture de formulaire s'applique uniquement à .NET 1.1. –

+0

Je me souviens d'avoir essayé Application.Exit() avant et il était capricieux de travailler. Il semble fonctionner indépendamment de ce que je fais dans ma demande maintenant c'est la solution. Cependant, this.Close() ne fonctionne pas - le formulaire est le seul formulaire. – Cheetah

2

ou en utilisant:

Application.Exit() 

partout dans le code.

ou

System.Environment.Exit(-1); 
0

Comme déjà répondu, vous pouvez Form.Close() ou Application.Shutdown(). Vous devrez peut-être modifier votre Application.Current.ShutdownMode pour qu'il soit Shutdown.OnLastWindowClose ou (MSDN Application.ShutdownMode).

Vous avez également mentionné que l'icône de notification persiste parfois dans la zone de notification - un correctif possible pour cela consiste à appeler Dispose() sur le contrôle NotifyIcon pour libérer ses ressources.

EDIT: Mon conseil pourrait être pour une application WPF, cela fait quelque temps que j'ai utilisé WinForms. J'espère que vous (ou quelqu'un d'autre) le trouve utile.

Questions connexes