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

Las siguientes son las formas en que podemos salir de una aplicación:

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

¿Cuál es la diferencia entre estos tres métodos y cuándo usar cada uno?

El método correcto sería Application.Exit() . De acuerdo con la Documentación , finaliza todos los bucles de mensajes y cierra todas las ventanas, lo que le da a sus formularios la posibilidad de ejecutar su código de limpieza (en Form.OnClose, etc.).

Environment.Exit simplemente mataría el proceso. Si alguna forma tiene, por ejemplo, cambios no guardados, no tendría posibilidades de preguntar al usuario si quiere guardarlos. Además, los recursos (conexiones de bases de datos, etc.) no se pudieron liberar correctamente, los archivos podrían no descargarse, etc.

Form.Close simplemente hace lo que dice: cierra un formulario. Si tiene otros formularios abiertos (quizás no ahora pero en alguna versión futura de su aplicación), la aplicación no finalizará.

Tenga en cuenta que si utiliza subprocesamiento múltiple, Application.Exit() no terminará sus subprocesos (y por lo tanto, la aplicación seguirá trabajando en segundo plano, incluso si la interfaz gráfica de usuario finaliza). Por lo tanto, debe tomar medidas para matar sus hilos, ya sea en la función principal (es decir, Program.Main() ) o en el evento OnClose de su formulario principal.

todos ellos están bien. pero form.Close() no cerrará su aplicación, cerrará el formulario y luego el main-method devolverá un int (exitcode).

si desea que su aplicación finalice con los códigos de salida use Environmet.Exit(exitcode) o devuelva el código de salida en el método main