我用下面的方法來請求在鎖屏的WinRT訪問拋出異常:請求鎖屏訪問拋出異常掛起或在mscorlib.dll
public async void RequestLockScreenAccess()
{
var status = BackgroundExecutionManager.GetAccessStatus();
if (status == BackgroundAccessStatus.Unspecified || status == BackgroundAccessStatus.Denied)
status = await BackgroundExecutionManager.RequestAccessAsync();
switch (status)
{
case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
_mainInfo.NotifyUser = "This app is on the lock screen and has access to Always-On Real Time Connectivity.";
break;
case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
_mainInfo.NotifyUser = "This app is on the lock screen and has access to Active Real Time Connectivity.";
break;
case BackgroundAccessStatus.Denied:
_mainInfo.NotifyUser = "This app is not on the lock screen.";
break;
case BackgroundAccessStatus.Unspecified:
_mainInfo.NotifyUser = "The user has not yet taken any action. This is the default setting and the app is not on the lock screen.";
break;
}
}
這可以給我2個不同的錯誤。如果我之前或在網上進行斷點
status = await BackgroundExecutionManager.RequestAccessAsync();
代碼將執行,但拋出以下異常:
類型的未處理的異常「System.Exception的」發生在mscorlib.dll 附加信息:找不到元素。 (異常來自HRESULT:0x8002802B(TYPE_E_ELEMENTNOTFOUND))
正如我在另一篇文章閱讀,這是爲他人所知的錯誤,不知道微軟。如果我不在這一行之前放置一個斷點,執行將會掛起。我在這裏做錯了什麼?
看來,如果我卸載我的應用程序,它可能會起作用,但之後一些重新運行它最終會再次失敗。
好的,謝謝,這很有道理。但即時通訊不在模擬器中運行。在將執行移入按鈕事件處理程序之後,它可以工作。但我當然想要自動請求鎖屏訪問。有什麼我應該知道的嗎? – Andreas
當一個調用需要封送到另一個線程時,可能會引發類型庫錯誤。請確保您只在程序的主UI線程上運行此代碼。 –