我最近将我的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。
答案 0 :(得分:1)
" ExectionTimeExceeded"与设备的CPU有关吗?
根据BackgroundTaskCancellationReason枚举,ExecutionTimeExceeded
表示:
后台任务已取消,因为它超出了指定的运行时间。
在UWP中,后台任务确实有CPU约束,CPU需要保证10%。更多限制,您可以参考this PPT的幻灯片22。但是对于ExecutionTimeExceeded
取消原因,它应该由"挂钟配额"的约束引起。除了渴望触发(运行25秒,取消5秒)外,后台任务限制为30秒的挂钟使用。因此,您的后台任务应该执行少于25秒,如果超过,任务将被取消并返回ExecutionTimeExceeded
取消原因。
Win 8 Store Apps和UWP之间是否有变化?
可能是的。看起来在Windows 8.1中,所有后台任务都有CPU和网络使用配额,但没有挂钟配额限制。更多细节请参考this PPT的幻灯片21。
然而,当我在笔记本电脑上运行应用程序(更高规格)时,后台任务在aprox 40-50秒后成功运行。
为此,我不确定为什么这发生在你身边。也许您的笔记本电脑是Windows 8.1,或者您计算错误的执行时间或其他一些原因。但是,如上所述,无论您的设备规格如何更高,后台任务仅限于30秒。