我的后台任务需要很长时间才能完成,而操作系统正在扼杀它。我试图在网上同步我的联系人,下面是我正在做的事情:
我有100个联系人,而且运行良好,但我想用~1000个联系人进行测试,但并不是每次都能完成。我正在使用一个MaintenanceTrigger,但我认为它对于后台任务来说还是太多了,但我需要对此进行确认。应该允许MaintenanceTrigger任务执行更多的资源密集型任务,那么为什么操作系统会扼杀我的后台任务呢?
发布于 2016-02-24 08:53:44
看看这个链接:https://msdn.microsoft.com/en-us/library/windows/apps/hh202942(v=vs.105).aspx
资源密集型任务的持续时间限制为10分钟。
在启动任务之前,必须满足以下约束。如果设备停止满足这些约束,则立即终止代理。
此外,对于低端/高端设备也有分别为11 of和20 of的存储器上限。
从你上面的描述来看,最有可能发生的情况是,我的记忆被击中了。也许这篇文章可以帮助您了解后台任务:如何在C#中获得可用或使用的内存的内存使用情况。
从Windows 8.1开始对内存限制的关键更改包括(找到这里):
发布于 2016-02-25 07:46:57
最后,我的任务被取消了,原因是ExecutionTimeExceeded,所以这就是问题所在。在ContactStore中试图导入~1000个联系人似乎需要12分钟,这对于后台任务来说太长了。我将不得不让用户打开应用程序并进行导入。谢谢你的帮助。
发布于 2016-02-24 09:05:52
呃..。也许很傻但是..。
“使用维护触发器的后台任务仅在系统连接到交流电源时才运行。”取自MSDN
当它工作的时候,它能被插到电源上吗?当它不工作的时候就不插上电源吗?
编辑:,当你尝试“同步”联系人时,你在考虑手机有多忙吗?你是在强迫这个应用程序通过电池保护程序在后台运行吗?
你可以做这样的事情看看你的手机有多忙.或者它可能是电池保护程序停止你的应用程序,如果下载大小等限制是达到…
从这里取走..。
var result = await BackgroundExecutionManager.RequestAccessAsync();
if (result == BackgroundAccessStatus.Denied)
{
// Handle this if it is important for your app.
}“如果结果被拒绝,手机认为它有太多的后台任务活动。在这种情况下,你可以提示你的用户去电池保护应用程序,并强制允许你的应用程序在后台运行,即使手机不想.”
https://stackoverflow.com/questions/35526361
复制相似问题