如何增加后台任务的运行时间?

时间:2018-01-29 15:39:49

标签: c# uwp background-task

所以我在UWP上有一个从服务器下载数据的后台任务。此任务可能需要一分钟,具体取决于互联网速度。我发现当我的用户最小化应用程序时,下载暂停,因此决定在BackgroundTask上运行

测试时我发现我的下载没有完成,后来发现this link后台任务有限制:

  

后台任务仅限于30秒的挂钟使用时间。

但是经过一些谷歌搜索后,我发现this link提到了一种增加后台任务超时的方法

  

在通用Windows平台中,后台任务是进程   在没有任何形式的用户界面的情况下在后台运行。背景   任务通常最多可能在二十五秒之前运行   他们被取消了。一些较长时间运行的任务也有一个检查   确保后台任务不会闲置或使用   记忆。在Windows Creators Update(版本1703)中,   引入了extendedBackgroundTaskTime限制功能   删除这些限制。 extendedBackgroundTaskTime功能是   在应用的清单文件中添加为限制功能:

     

Package.appxmanifest

     

XML

 <Package ...> 
    <Capabilities>  
        <rescap:Capability Name="extendedBackgroundTaskTime"/>      
    </Capabilities> 
  </Package> 
     

此功能可删除执行时间   限制和闲置任务监督

但是在将上面的内容添加到我的package.appxmanifest文件后,我收到以下错误:

  

文件内容&#39; Package.appxmanifest&#39;不是格式良好的XML。   &#39;阻容组件&#39;是未声明的前缀

那么可以从我的应用程序中删除此后台任务限制吗?

2 个答案:

答案 0 :(得分:2)

UWP有一项功能,允许您对即使应用程序关闭时可以完成的下载进行排队。 请查看this article,其中说明了如何使用此功能。

如果你仍想从后台任务开始下载,那么让后台任务调用该功能,这样,当后台任务到期时,下载将继续,并由Windows和UWP管理。

答案 1 :(得分:1)

正如Mike McCaughan在关于这个问题的评论中所观察到的那样,您所看到的特定错误的最可能解释是您根本没有在封闭的上声明rescap命名空间功能标记引用的元素:

<Package
    xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
    xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
    xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
    xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    IgnorableNamespaces="uap mp wincap rescap">

您是否需要其他名称空间我不能说,但您正在争论的受限制功能案例中涉及的关键名称是xmlns:rescap

documentation provided by Microsoft here获取的信息。