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); 

请注意,应用程序需要作为控制台应用程序运行。 这个答案是我所知道的最简单的方法; 接受的答案看起来更难。

一个简单的测试,告诉您是否在控制台模式下运行:从命令行调用您的应用程序(确保您的代码不会立即关闭)。 应显示主窗口。 如果您可以在控制台中键入其他命令,则您的应用程序不会在其上下文中运行。 应锁定命令提示符,等待您关闭窗口。

覆盖OnExit方法,在ExitEventArgs中可以设置该值。

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

它适用于任何一种方法( Environment.ExitCode=110Environment.Exit(110) )。 我希望你从控制台而不是从Visual Studio调用程序,然后检查ExitCode …

您可以在Main方法中执行此操作。 只需将其return-value-type更改为int而不是void并返回exit-code

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

更新:

要在WPF应用程序中创建自定义Main ,您应该按照以下步骤操作:

  • 首先:在解决方案资源管理器中右键单击项目并单击卸载项目卸载项目

  • 通过将更改为此来修改.csproj文件:

  • 现在,您可以在项目中创建自己的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); } } 

像这样做:

 Environment.Exit(110); 

这将使用退出代码110终止当前应用程序。

你可以通过以下方式做到这一点……

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

Shoutdown()返回一个代码。 和Exit()也返回退出代码,但Close()只关闭应用程序。