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=110
或Environment.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()只关闭应用程序。