Windows 10 通用应用程序挂起崩溃并出现死锁
Posted
技术标签:
【中文标题】Windows 10 通用应用程序挂起崩溃并出现死锁【英文标题】:Windows 10 universal application suspend crashes with deadlock 【发布时间】:2016-05-31 07:57:00 【问题描述】:我在 Windows 10 通用应用程序中遇到了挂起功能的问题。对于第一次登录,我有一些对 api 的请求的逻辑,以便为刚登录的用户加载信息。在此初始加载期间,如果按下“开始”按钮,应用程序应该会暂停,但没有达到“OnSuspending”。 我按照一些步骤来解决问题。在生成的迷你转储中,我发现了一些奇怪的东西:
EXCEPTION_CODE: (NTSTATUS) 0xc0000194 - EXCEPTION Possible deadlock condition.
STACK_TEXT:
ntdll!NtWaitForMultipleObjects+0x6
KERNELBASE!WaitForMultipleObjectsEx+0x112
twinapi_appcore!Event::WaitWithFreeUnusedLibraries+0x88
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationFactory::RunInternal+0x208
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationFactory::Run+0x12
Windows_UI_Xaml!RunInActivationMode+0x58
Windows_UI_Xaml!DirectUI::FrameworkApplicationFactory::Start+0x32
0x2d0684
BUCKET_ID: c0000194_twinapi_appcore!Event::WaitWithFreeUnusedLibraries+88
我只能在设备上而不是在模拟器上重现它。
【问题讨论】:
【参考方案1】:在通用 Windows 10 应用程序中,如果您想执行任何后台操作,您应该使用后台任务。 您的应用程序陷入僵局的原因是您同时开始调用 Api 和暂停应用程序。 请尝试使用下面的教程,该教程展示了如何实现后台任务(有很好的描述):
https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task
您也可以使用我的 GitHub 中的现成示例:
https://github.com/Daniel-Krzyczkowski/Windows10/tree/master/BackgroundTasksDemo
【讨论】:
以上是关于Windows 10 通用应用程序挂起崩溃并出现死锁的主要内容,如果未能解决你的问题,请参考以下文章