web-dev-qa-db-fra.com

Winforms: Application.Exit vs Enviroment.Exit vs Form.Close

Voici les façons dont nous pouvons quitter une application:

  1. Enviroment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

Quelle est la différence entre ces trois méthodes et quand les utiliser chacune?

56
Parag Meshram

La méthode appropriée serait Application.Exit(). Selon le Documentation , il termine toutes les boucles de messages et ferme toutes les fenêtres, donnant ainsi à vos formulaires la possibilité d'exécuter leur code de nettoyage (dans Form.OnClose etc.).

Environment.Exit Tuerait simplement le processus. Si une forme a par exemple modifications non enregistrées, il n'aurait aucune chance de demander à l'utilisateur s'il souhaite les enregistrer. De plus, les ressources (connexions à la base de données, etc.) n'ont pas pu être libérées correctement, les fichiers peuvent ne pas être vidés, etc.

Form.Close Fait juste ce qu'il dit: il ferme un formulaire. Si d'autres formulaires sont ouverts (peut-être pas maintenant mais dans une future version de votre application), l'application ne se terminera pas.

Gardez à l'esprit que si vous utilisez le multithreading, Application.Exit() ne terminera pas vos threads (et donc l'application continuera à fonctionner en arrière-plan, même si l'interface graphique est terminée). Par conséquent, vous devez prendre des mesures pour tuer vos threads, soit dans la fonction principale (c'est-à-dire Program.Main()), soit dans l'événement OnClose de votre formulaire principal.

101
MartinStettner

ils sont tous bien. mais form.Close() ne fermera pas votre application, il ferme le formulaire et après cela, la méthode main retourne un int (exitcode).

si vous voulez que votre application se termine avec exitcodes, utilisez Environmet.Exit(exitcode) ou retournez le exitcode dans la méthode principale

4
codeteq