UWP App总是以非零返回码退出

时间:2019-03-15 16:53:38

标签: c# uwp destructor

据我了解,未完成并返回0错误代码的应用程序未正确终止。但是,无论如何,我制作的任何UWP App(甚至是非常默认的App)每次都以错误代码1结尾。而且,从不调用它的主类Dispose()和析构函数。这是预期的行为吗?

为了进行复制,我刚刚制作了默认的UWP应用:

  • 右键单击解决方案->添加->新项目...
  • 然后使用其他语言-> Visual C#-> Windows Universal->“空白应用程序(通用Windows)”
  • 然后构建和部署应用程序。

如果您现在运行然后关闭应用程序,则似乎是强制退出。我得到的最后一个输出是:

The thread 0x35a4 has exited with code 0 (0x0).
The thread 0x34f4 has exited with code 1 (0x1).
The program '[3376] App1.exe' has exited with code 1 (0x1).

所以我认为这意味着线程失败,然后应用程序失败。这是正确的,并且是不好的吗?

此外,我在主App.xaml.cs中添加了以下代码:

    ~App()
    {
        System.Diagnostics.Debug.WriteLine("Calling destructor");
    }

    // (Implement Disposable interface)
    public void Dispose() 
    {
        System.Diagnostics.Debug.WriteLine("Calling dispose");
    }

都不会被调用。发生了什么事?

2 个答案:

答案 0 :(得分:3)

我建议您参加UWP lifecycles和赛事。据我所知,当用户关闭该应用程序时,它会进入 已暂停 模式,然后被 终止 b>。 UWP应用程序的生命周期经历了一系列步骤,在启动或暂停时,它甚至输入并离开背景。 在 App.Xaml.Cs 中,您可以继续进行事件处理并了解应用程序生命周期的工作方式。

答案 1 :(得分:0)

我按照您的步骤创建了一个空白项目。运行它给了我: enter image description here

线程或应用程序均未使用退出代码关闭。因此,您遇到的异常是不正常的,并且被认为是一个问题,尤其是在线程终止整个应用程序的情况下。我将卸载VS17和所有库,然后进行全新安装。

您是否尝试过非UWP项目模板?