Код выхода приложения 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
, любая идея в чем проблема?
Ответы
Ответ 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() закрывает приложение только.