首页 > 解决方案 > UWP 应用程序始终以非零返回码退出

问题描述

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

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

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

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

所以我认为这意味着线程失败,然后应用程序失败。这是正确的,这很糟糕吗?

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

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

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

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

标签: c#uwpdestructor

解决方案


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


推荐阅读