WPF应用程序退出代码

时间:2011-10-14 18:34:32

标签: c# .net 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,知道问题是什么?

6 个答案:

答案 0 :(得分:10)

对于WPF,请尝试

Application.Current.Shutdown(110);

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您可以使用Main方法执行此操作。只需将其返回值类型更改为int而不是void,然后返回exit-code

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

<强>更新

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

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

  • 修改.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);
    }
}

答案 4 :(得分:0)

这样做:

Environment.Exit(110);

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

答案 5 :(得分:0)

您可以通过以下方式执行此操作...

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

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