【问题标题】:UWP App always exits with non-zero return codeUWP 应用程序始终以非零返回码退出
【发布时间】:2019-08-06 19:31:33
【问题描述】:

据我了解,未完成并返回 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");
    }

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

【问题讨论】:

    标签: c# uwp destructor


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的尝试,好吧,那看起来确实很糟糕,也许我的安装或操作系统是问题所在。这是一个 UWP GUI 应用程序,比如初始化 WPF MainWindow 的应用程序吗?
    • 是的,我和你一样从 VS 模板创建了一个。在您查看操作系统之前,我会尝试重新安装 VS 并确保您的库都是全新的。最有可能的罪魁祸首是 VS 安装。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-12
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多