【问题标题】:UWP App RequestRestartAsync Throws Exception in System.Private.CorelibUWP 应用 RequestRestartAsync 在 System.Private.Corelib 中引发异常
【发布时间】:2018-05-23 22:35:07
【问题描述】:

我的电脑使用的是 Windows 10 build 16299,这是 CoreApplication.RequestRestartAsync(...) 中 UWP 重启功能所需的最低版本。但是,在我使用 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# .net uwp


    【解决方案1】:

    当您在未连接 Visual Studio 进行调试的情况下安装并运行应用时,此错误不会影响应用的实际体验。 Visual Studio 阻止 Windows 挂起附加到调试器的应用。这是为了允许用户在应用程序运行时查看 Visual Studio 调试 UI。当您使用 Visual Studio 调试此代码时,您可以在您的设备 Task Manager => Details 选项卡中看到 App 状态仍为 Running调用此方法,因此应用无法重新启动,因为在 Windows 10 版本 1803 之前,一次只能运行一个 UWP 应用的实例。更多关于多实例UWP的详情,请查看Create a multi-instance Universal Windows App

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

    【讨论】:

    • 谢谢!当我独立于 Visual Studio 运行该应用程序时,我能够看到该应用程序成功重新启动。在调试模式下我能够看到它重新启动的机器是 Windows 10 build 17134 上的机器。
    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 2017-11-04
    • 2016-11-22
    • 2018-07-10
    • 2019-01-29
    • 2016-03-13
    • 2016-11-04
    • 2018-02-19
    相关资源
    最近更新 更多