类未注册(异常来自HRESULT: 0x80040154).Windows Phone 8.1中的RequestAcce
本文关键字:Phone Windows RequestAcce 中的 0x80040154 注册 异常 HRESULT | 更新日期: 2023-09-27 18:12:59
我正试图在我的项目中实现后台任务。所以我添加了一个Windows Runtime Component Project
,并从我的主Windows Phone 8.1 silverlight project
中给出了它的参考。但是当我调用下面的函数时,我得到了一个异常
"类型为'System '的第一次异常。发生的异常mscorlib.ni.dll。附加信息:班级未注册(异常from HRESULT: 0x80040154 (regdbe_classnotreg))"
// Applications must have lock screen privileges in order to receive raw notifications
BackgroundAccessStatus backgroundStatus = await BackgroundExecutionManager.RequestAccessAsync();
// Make sure the user allowed privileges
if (backgroundStatus != BackgroundAccessStatus.Denied && backgroundStatus != BackgroundAccessStatus.Unspecified)
{
OpenChannelAndRegisterTask();
}
else
{
// This event comes back in a background thread, so we need to move to the UI thread to access any UI elements
Dispatcher.BeginInvoke(() =>
{
Debug.WriteLine("Lock screen access is denied");
});
}
为什么会这样?后来我创建了一个示例Windows phone项目,上面的代码运行良好。这个奇怪的问题的原因是什么?
如果您有任何线索,请帮助我解决这个问题。
后台任务必须使用它们的类名在Package.appxmanifest
中注册("声明")。
双击你的appxmanifest
文件,得到声明,并确保你有a)声明后台任务,b)它有正确的类名(如NamespaceName.BackgroundTaskClassName
)在入口点下输入。
RequestAccessAsync
对我来说失败了与你得到的完全相同的错误信息,因为我忘记注册我的后台任务。
(对于那些瞄准Windows 10而不是8(1)的读者:Frank Sposaro的答案不再适用于Windows 10,因为他提供了正确的MSDN链接文档)
根据MSDN,您应该从UI线程运行RequestAccessAsync。您可能希望确保是这种情况,如果需要,可以使用Dispatch。我看到它抛出了各种各样的异常,也许regdbe_classnotreg是其中之一。