Выход из консольного приложения в C#

Я много читал здесь о stackoverflow, комментариях, мнениях и всевозможных идеях. Но в любом случае, мне действительно нужен объясненный способ выхода из моего консольного приложения (я на VS2010 Framework 4) на C# с пользовательской ошибкой.

лучшее, что я мог прочитать прямо сейчас, находится на VB:

Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

и используйте ExitProcess (1) для ошибки или ExitProcess(0)

Итак, мои вопросы:

  • это то же самое, что и окружающая среда.Выход(1) ?
  • что лучше для приложения, которое работает как механическая работа?
  • что означает коды выхода, -1, 0, 1, и каковы их различия?
  • как насчет статического void ExitProcess(uint uExitCode);?

некоторые ранее вопросы, помеченные как библиография:

какая команда для выхода из консольного приложения в C#?

http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

6 ответов


вы можете:

  1. Окружения.Exit (int)
  2. повторно объявите свою основную функцию как возвращающую int и верните из нее значение.

1) окружающая среда.Выход почти такой же,

2) я думаю, служба автоматизации windows? попробуйте, но я думаю, что не буду работать, как ожидалось...

3) Посмотрите на это, Windows Exitcodes

4) это хорошо, но вы можете использовать .Net встроенный метод также


Environment.Exit будет делать то же самое как ExitProcess (плюс, возможно, некоторая очистка .Net) - конечные результаты одинаковы.

Что касается кодов выхода, они означают все, что вы хотите от них (в пределах разумного) - 0 "успешно",!= 0 "Не успешно", но вы можете использовать любое значение, отличное от 0, которое вам нравится, чтобы означать все, что вам нравится, это зависит от программы, использующей это значение, чтобы сделать что-то полезное с ним.


Ниже приведены некоторые из кодов выхода, специфичных для одного из ваших вопросов при использовании Environment.Exit(ExitCode)

ERROR_SUCCESS
0 (0x0)
The operation completed successfully.
ERROR_INVALID_FUNCTION
1 (0x1)
Incorrect function.
ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.

для больше ExitCodes с деталями пожалуйста см. здесь http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs. 85).aspx


-1. это то же самое, что и окружающая среда.Выход(1) ?

это .NET, вы едва ли узнаете, какой WINAPI они реализовали для него, не заглядывая внутрь с windbg.Однако ничего не было задокументировано о сходстве в ExitProcess и Environment.Exit.Environment.Exit может содержать больше, чем ExitProcess.

-2. что лучше для приложения, которое работает как механическая работа?

если вы запускаете автоматическое задание, используя некоторый планировщик, чем у меня есть и другая идея использования служб windows вместо этого.Это удалит любую головную боль exitprocess.

-3. что означает коды выхода, -1, 0, 1, и каковы их различия?

это просто коды, чтобы сообщить ОС вид выхода. Возможно, вы видели программистов, указывающих return 1 по ошибки или return 0 на успех.Это делает вас свободным использовать любой из них.

-4. как насчет статического void ExitProcess(uint uExitCode);?

вы можете использовать неуправляемые вызовы в своем приложении, и, конечно, вы пропустите управленческую деятельность из Environment.Exit.


Я отвечаю на вопрос "Что означает коды выхода, -1, 0, 1, и каковы их различия?"

различные коды выхода-это просто способ передачи статуса с приложениями вызывающего абонента. Например, в одном из проектов, в которых я участвовал, мы использовали 99 в качестве кода предупреждения. Пока все вовлеченные приложения знают, что делать, когда они получают 99 или что-то еще, все в порядке. В этом приложении, если вызывающий абонент получает что - либо еще, то 0 или 99, вызывающий абонент должен прервать и в случае 99 он был свободен продолжать.