Visual studio 2015 挂起和关闭livecycle事件后,应用程序窗口仍然可见

Visual studio 2015 挂起和关闭livecycle事件后,应用程序窗口仍然可见,visual-studio-2015,uwp,windows-10,c++-cx,Visual Studio 2015,Uwp,Windows 10,C++ Cx,当我在调试器下运行我的应用程序并触发“suspend and shutdown”时,挂起事件处理程序上的livecycle事件被执行,然后进程立即退出(没有崩溃或任何可见错误)。事件循环CoreDispatcher::ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit)不会中断,因此永远不会退出IFrameworkView::Run方法,也永远不会调用IFrameworkView::Uninitialize或destructor。而且(

当我在调试器下运行我的应用程序并触发“suspend and shutdown”时,挂起事件处理程序上的livecycle事件被执行,然后进程立即退出(没有崩溃或任何可见错误)。事件循环CoreDispatcher::ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit)不会中断,因此永远不会退出IFrameworkView::Run方法,也永远不会调用IFrameworkView::Uninitialize或destructor。而且(更令人困惑的是)应用程序窗口仍然可见!正如我在Spy++中发现的,它实际上属于ApplicationFrameHost进程。与之交互可能会产生新的应用程序流程

我已尝试在挂起事件处理程序的“”上执行CoreWindow::Close(),但它会引发异常(“WinRT信息:不允许关闭主窗口”)

这种行为可以在MS的许多DirectX样本中重现


“挂起和关闭”是否以某种方式被破坏,或者使用它是否需要一些先决条件,或者它可能无法用于非xaml应用程序?

当您正在调试并且在Visual Studio的生命周期之间切换时,应用程序的窗口不会关闭。这就是它在调试中的工作方式。然而,当不调试时,它将按预期工作。由于应用程序窗口未关闭,我认为在关机过程中出现了一些问题。但如果不是这样,为什么不调用取消初始化和析构函数呢?我确实意识到uwp应用程序可以被静默终止,但我想调试一个正确的退出序列。也许最好尝试将所有重要的非初始化操作压缩到On_挂起事件处理程序中?好的,现在我已经在VS2017中对其进行了测试,似乎“挂起和关闭”可能真的会被破坏,因为它的行为与以前不同..无论如何,将On_Suspending事件处理程序中的所有内容统一起来不是一个好主意,因为只有当用户最小化应用程序时,应用程序才可能被挂起,这可能会经常发生,而您将只是一次又一次地统一和初始化应用程序。。我可以帮你。。