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

标签 c# uwp destructor

据我了解,未完成并返回 0 错误代码的应用程序未正确终止。但不知何故,我制作的任何 UWP 应用程序,即使是非常默认的应用程序,每次都以错误代码 1 结束。此外,它的主类的 Dispose() 和析构函数永远不会被调用。这是预期的行为吗?

为了重现,我刚刚制作了默认的 UWP 应用:

  • 右键单击“解决方案”->“添加”->“新建项目...”
  • 然后在 Other Languages -> Visual C# -> Windows Universal -> “Blank App (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");
    }

两者都没有被调用。怎么回事?

最佳答案

我想建议你玩 UWP lifecycles和事件。据我了解,应用程序在用户关闭时进入暂停模式,然后终止. UWP 应用程序生命周期经历一系列步骤,其中它甚至在启动或暂停进入和离开后台。 在 App.Xaml.Cs 中,您可以继续处理事件并了解应用程序生命周期的工作原理。

关于c# - UWP App 总是以非零返回码退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187350/

相关文章:

c# - 从网络上的共享文件夹下载文件

c++ - 想通过使用带变量的构造函数来声明数组

c++ - 我的复制构造函数导致使用我的类的方法失败。有人可以看一下并告诉我我做错了什么吗?

c# - 是否可以实现递归 "SelectMany"?

c# - 如何通过 ViewModel 控制 View VisualState

c# - ZipFile.CreateFromDirectory 不包括目录项

uwp - UWP 和非 UWP 应用之间的通信

c# - UWP Store App 中的隐私政策 ?提交应用商店认证失败

c++ - 使用动态数组复制构造函数和析构函数

c# - 在 Web API 和 asp.net core 中使用基于 Cookie 的身份验证