UWP ExtendedExecution - 请求扩展执行时出错
Posted
技术标签:
【中文标题】UWP ExtendedExecution - 请求扩展执行时出错【英文标题】:UWP ExtendedExecution - Error when requesting Extended Execution 【发布时间】:2018-04-05 19:24:25 【问题描述】:我有一个 UWP 应用程序,它在操作开始后触发的回调中请求扩展执行,如下所示:
private async void HandleOnSyncStart(ISyncStart msg)
// request extended execution
ExtendedExecutionResult result = await
Utils.ExtendedExecutionHelper.RequestExtendedExecutionSessionAsync();
,但我得到以下错误
The group or resource is not in the correct state to perform the
requested operation. (Exception from HRESULT: 0x8007139F)
在 RequestExtendedExecutionSessionAsync() 方法的返回调用中抛出错误,如下所示。这是堆栈跟踪:
at Windows.ApplicationModel.ExtendedExecution.ExtendedExecutionSession..ctor()
at MyProject.UWP.Utils.ExtendedExecutionHelper.<RequestExtendedExecutionSessionAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at MyProject.UWP.MainPage.<HandleOnSyncStart>d__65.MoveNext()
ExtendedExecutionHelper 静态类的 RequestExtendedExecutionAsync() 方法请求扩展执行会话,如下所示:
public static async Task<ExtendedExecutionResult> RequestExtendedExecutionSessionAsync()
ClearExtendedExecutionSession(); //first clear if any session granted
var newSession = new ExtendedExecutionSession();
newSession.Reason = ExtendedExecutionReason.Unspecified;
newSession.Description = "Extended Execution Request";
newSession.Revoked += OnExtendedExecutionSessionRevoked;
ExtendedExecutionResult result = await newSession.RequestExtensionAsync();
switch (result)
case ExtendedExecutionResult.Allowed:
Debug.WriteLine(string.Format("ExtendedExecutionHelper: ExtendedExecution allowed."));
session = newSession;
break;
case ExtendedExecutionResult.Denied:
Debug.WriteLine(string.Format("ExtendedExecutionHelper: ExtendedExecution denied."));
newSession.Dispose();
break;
return result; //ERROR
【问题讨论】:
【参考方案1】:这个异常是在ExtendedExecutionSession
类的构造函数中抛出的。
堆栈跟踪: 在 Windows.ApplicationModel.ExtendedExecution.ExtendedExecutionSession..ctor()
而这个异常可能是由
引起的任何时候只能请求一个ExtendedExecutionSession;尝试在当前处于活动状态时创建另一个会话将导致 ExtendedExecutionSession 构造函数抛出异常。
所以看起来ClearExtendedExecutionSession
未能处理之前正在运行的会话。如果您的代码是从this page... 采用的,可能代码有一些细微的错误,如该页面上的一些 cmets 所示。
你可以展示你如何处理之前的运行会话。
【讨论】:
我知道该页面中的错误,我已修复它们。但是在实例化会话时我没有收到错误,请参阅错误的代码行。我认为它与多个 EES 无关,因为我没有从 EES ctor 调用中得到错误。谢谢 其实你是对的,我尝试一次又一次地调用EES c-tor,这正是我得到的。谢谢,以上是关于UWP ExtendedExecution - 请求扩展执行时出错的主要内容,如果未能解决你的问题,请参考以下文章