Подтвердить что ты не робот

Код выхода приложения 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, любая идея в чем проблема?

4b9b3361

Ответ 1

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

Application.Current.Shutdown(110);

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

UPDATE:

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

  • Сначала: выгрузите проект, щелкнув его правой кнопкой мыши в обозревателе решений и нажмите "Выгрузить проект"

  • Измените файл .csproj, изменив <ApplicationDefinition Include="App.xaml"> на этот: <Page Include="App.xaml">

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

Пример Main и 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);
    }
}

Ответ 5

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

Environment.Exit(110);

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

Ответ 6

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

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

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