2009-09-24 16 views

Respuesta

15

La diferencia más obvia es que puede llamar a Environment.Exit desde cualquier lugar de su código. Aparte de eso:

  • El acabado principal no finalizará el proceso si hay otros subprocesos en primer plano en ejecución; Environment.Exit eliminará el proceso de todos modos.
  • Environment.Exit finaliza el proceso sin desenrollando la pila y ejecutando finalmente los bloques (al menos según mis experimentos). Obviamente, cuando regrese del Main, ya estará en el nivel superior en lo que respecta al código administrado.
  • Ambos dan finalizadores la oportunidad de ejecutar antes de que el proceso de realmente se apaga
  • Environment.Exit exige el permiso de seguridad adecuada, por lo que no va a funcionar para aplicaciones menos confiables.

Después de ver la actualización de la pregunta, no estoy del todo seguro de lo que quiere decir. En ambos casos, el proceso acaba de finalizar con un código de 2 ...

+0

Consulte http://stackoverflow.com/questions/713805/net-finalizers-and-exit0 para obtener detalles sobre la finalización al final del proceso. –

5

Environment.Exit(2) se puede utilizar en todas partes. return 2 solo dentro de la función Main().

+0

+1 Declarando lo obvio, pero un buen punto, no obstante. –

+0

Pregunta actualizada: ¿hay alguna diferencia desde fuera de la aplicación? –

2

Si usted está haciendo una prueba de unidad y llamando principal

Program.Main(args); 

continuación Environment.Exit reflejará siempre un fracaso. Donde el uso de retorno funcionará como se espera.

Cuestiones relacionadas