Cierre de aplicaciones

¿Cuál es la mejor práctica al cerrar una aplicación C #?

He leído que puedes usar:

Environment.Exit(0); or Application.Exit(); 

Pero, ¿cuál es la diferencia?

Además, con respecto a Environment.Exit (0), he utilizado códigos de salida antes cuando trabajaba con Java pero nunca he entendido completamente su propósito. ¿Qué papel juegan cuando salen de una aplicación en C #?

System.Windows.Forms.Application.Exit () : informa a todas las bombas de mensajes que deben finalizar, y luego cierra todas las ventanas de la aplicación después de que los mensajes hayan sido procesados. Este método detiene todos los bucles de mensajes en ejecución en todos los hilos y cierra todas las ventanas de la aplicación. Este método no obliga a la aplicación a salir. El método Exit generalmente se llama desde un bucle de mensaje y fuerza a Run a regresar. Para salir de un bucle de mensaje solo para el hilo actual, llame a ExitThread. Esta es la llamada a usar si está ejecutando una aplicación WinForms. Como regla general, use esta llamada si ha llamado a System.Windows.Forms.Application.Run.

System.Environment.Exit (exitCode) : finaliza este proceso y proporciona al sistema operativo subyacente el código de salida especificado. Esta llamada requiere que tenga permisos SecurityPermissionFlag.UnmanagedCode. Si no lo hace, se produce un error SecurityException. Esta es la llamada a usar si está ejecutando una aplicación de consola.

Espero que sea mejor usar Application.Exit

compruebe estos enlaces Application.Exit () vs Application.ExitThread () vs Environment.Exit () y http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

Application.Exit es para Application.Exit de Windows Forms: informa a todas las bombas de mensajes que deben finalizar, espera a que finalicen el procesamiento de eventos y luego finaliza la aplicación. Tenga en cuenta que no necesariamente obliga a la aplicación a salir.

Environment.Exit es aplicable para todas las aplicaciones de Windows, sin embargo, está destinado principalmente para su uso en aplicaciones de consola. Inmediatamente termina el proceso con el código de salida dado.

En general, debe usar Application.Exit en las Application.Exit de Windows Forms y Environment.Exit en las aplicaciones de la consola (aunque prefiero que el método Main / punto de entrada se ejecute en lugar de llamar a Environment.Exit en las aplicaciones de la consola).

Para obtener más detalles, consulte la documentación de MSDN.

¿Qué papel juegan cuando salen de una aplicación en C #?

Lo mismo que cualquier otra aplicación. Básicamente se devuelven a la persona que llama. Irrelvante si el inicio fue un iicon doble clic. Relevante es que la llamada es un archivo por lotes que decide si la aplicación funcionó en el código de retorno. ASÍ QUE, a menos que escriba un progtwig que lo necesite, el código de retorno devuelto es irrelevante.

Pero, ¿cuál es la diferencia?

Uno proviene del entorno uno del System.Windows.Forms? .Application. La función allí no debe ser muy diferente.

para mi mejor solotion esto es

  Thread.CurrentThread.Abort(); 

y cerrar la aplicación de la fuerza.