我最近将我的LOB Win 8 RT App移植到了UWP . 我正在使用后台任务连接到Web服务和下载/上传数据 .
在低规格的Win 10平板电脑上,我有Win8应用程序和UWP应用程序 . Win8应用程序表现不错,但UWP应用程序将调用取消事件处理程序,并显示错误ExcecutionTimeExceeded . 在aprox 23秒后发生这种情况 . 它不下载所有数据(而在同一设备上的Win 8应用程序) .
但是,当我在笔记本电脑上运行应用程序(更高规格)时,后台任务在aprox 40-50秒后成功运行 .
“ExectionTimeExceeded”是否与设备的CPU相关? Win 8商店应用程序和UWP之间是否有所改变?
另外 - 我正在使用BackgroundTaskDeferral .
1 回答
根据BackgroundTaskCancellationReason枚举,
ExecutionTimeExceeded
它说:在UWP中,后台任务确实有CPU约束,CPU需要保证10% . 更多限制,您可以参考this PPT的幻灯片22 . 但是对于
ExecutionTimeExceeded
取消原因,它应该由"wall clock quota"的约束引起 . 除了渴望触发(运行25秒和取消5秒)之外,后台任务限制为30秒的挂钟使用 . 因此,您的后台任务应该执行少于25秒,如果超过,任务将被取消并返回ExecutionTimeExceeded
取消原因 .可能是的 . 看起来在Windows 8.1中,所有后台任务都有CPU和网络使用配额,但没有挂钟配额限制 . 更多细节请参考this PPT的幻灯片21 .
为此,我不确定为什么这发生在你身边 . 也许您的笔记本电脑是Windows 8.1,或者您计算错误的执行时间或其他一些原因 . 但是我的上面提到的后台任务仅限于30秒,无论你的设备规格有多高 .
更多细节请参考Support your app with background tasks .