Ответ 1
Самое очевидное отличие состоит в том, что вы можете вызвать Environment.Exit из любого места в вашем коде. Помимо этого:
- Основная финишная обработка не завершит процесс, если выполняются другие потоки переднего плана;
Environment.Exit
все равно уничтожит процесс. -
Environment.Exit
завершает процесс без разматывания стека и выполнения блоков finally (по крайней мере, согласно моим экспериментам). Очевидно, что когда вы возвращаетесь изMain
, вы уже находитесь на верхнем уровне, насколько это касается управляемого кода. - Оба дают финализаторы шанс выполнить до того, как процесс действительно выключится.
-
Environment.Exit
требует соответствующего разрешения безопасности, поэтому не будет работать для менее надежных приложений.
Увидев обновление вопроса, я не совсем уверен, что вы имеете в виду. В обоих случаях процесс просто выйдет с кодом из 2...