首页 > 解决方案 > UWP 应用 RequestRestartAsync 在 System.Private.Corelib 中引发异常

问题描述

我的电脑使用的是 Windows 10 build 16299,这是CoreApplication.RequestRestartAsync(...). 但是,在我使用 参数调用重新启动后string.Empty,应用程序确实关闭了,几秒钟后,从以下位置抛出了一个异常System.Private.CoreLib.dll

Exception occurred: System.Exception: Exception from HRESULT: 0x80040900
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

我能够从 Try/Catch 块中获取此信息,并在调试模式下从 Visual Studio 2017 运行应用程序。在我试图捕捉它之前,会出现一个对话框,指示在 Visual Studio 的另一个实例中进行调试。当另一个实例加载时,这是不允许的,因为它说已经附加了一个调试器。

此外,我尝试通过启用“公共语言运行时异常”来捕捉它,但它没有捕捉到这个异常。

为什么会这样?当我在另一台 Windows 10 机器上运行它时,重启工作正常。我可以调试或获取有关异常的更多信息System.Private.CoreLib吗?

标签: c#.netuwp

解决方案


当您在未连接 Visual Studio 进行调试的情况下安装并运行应用时,此错误不会影响应用的实际体验。Visual Studio 阻止 Windows 挂起附加到调试器的应用。这是为了允许用户在应用程序运行时查看 Visual Studio 调试 UI。当您使用 Visual Studio 调试此代码时,您可以在调用此方法后在您的设备任务管理器=>详细信息选项卡中看到应用状态仍在运行,因此应用无法重新启动,因为在 Windows 10 版本 1803 之前,只有一次可以运行一个 UWP 应用实例。有关多实例 UWP 的更多详细信息,请参阅创建多实例通用 Windows 应用

但在我对设备 OS 版本 1803 OS build 17134 和 Visual Studio 版本 15.7 的测试中,它会在您调用CoreApplication.RequestRestartAsync(string.Empty)代码后自动断开 Visual Studio 调试器。


推荐阅读