Код выхода приложения WPF

Я пытаюсь установить и получить код выхода приложения.

Я пытаюсь сделать что-то следующее:

protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); if ( e.Args.Length != 0) { } else { new MainWindow().ShowDialog(); } Environment.ExitCode = 110; this.Shutdown(); } 

И затем я пытаюсь в cmd получить его через echo %ERRORLEVEL%

Но я всегда получаю результат 0 , любая идея в чем проблема?

Для WPF попробуйте

 Application.Current.Shutdown(110); 

Обратите внимание, что приложение должно работать как консольное приложение. Этот ответ – самый простой способ, о котором я знаю; принятый ответ выглядит более сложным.

Легкий тест, чтобы узнать, работаете ли вы в режиме консоли: вызовите приложение из командной строки (убедитесь, что ваш код не отключается сразу). Главное окно должно отображаться. Если вы можете ввести еще одну команду в консоли, ваше приложение не будет работать в своем контексте. Командная строка должна быть заблокирована, ожидая закрытия windows.

переопределить метод OnExit, а в ExitEventArgs вы можете установить это значение.

  protected override void OnExit(ExitEventArgs e) { e.ApplicationExitCode = your_value; } 

Он работает для меня любым методом ( Environment.ExitCode=110 или Environment.Exit(110) ). Надеюсь, вы вызываете программу с консоли, а не из Visual Studio, чтобы проверить ExitCode …

Вы можете сделать это в Main методе. Просто измените свой тип возвращаемого значения на int вместо void и верните exit-code

 static int Main(string[] args) { // something to do Console.ReadKey(); return 110; } 

ОБНОВИТЬ:

Чтобы создать пользовательский Main в приложении WPF, выполните следующие действия:

  • Во-первых: выгрузите проект, щелкнув его правой кнопкой мыши в обозревателе решений и нажмите « Выгрузить проект»

  • Измените файл .csproj , изменив на этот:

  • Теперь вы можете создать свой собственный метод Main в своем проекте:

Пример Main метода и class App :

 public partial class App : Application { [STAThread] public static int Main() { App app = new App(); app.InitializeComponent(); var i = app.Run(); return i; } public App() : base() { } protected override void OnExit(ExitEventArgs e) { e.ApplicationExitCode = 110; base.OnExit(e); } } 

Сделай это так:

 Environment.Exit(110); 

Это прекратит текущее приложение с кодом выхода 110 .

Вы можете сделать это следующими способами …

  Application.Current.Shutdown(110); Environment.Exit(10); this.Close(); 

Shoutdown () возвращает код. и Exit () также возвращает код выхода, но Close () закрывает приложение только.