2016-01-06 21 views
2

我有一个WinRT应用程序(Windows 8.1和Windows Phone 8.1)。我使用BackgroundDownloader来分组下载文件。BackgroundDownloader和“最多只能配置50组”

我用组来下载有声读物,让有声读物的所有的曲目都下载一组,可以一次被取消。每个组中的下载都是串行下载(不是并行),因此用户可以从一开始就开始收听有声读物。

我用这样的代码来创建下载:

var downloader = new BackgroundDownloader 
{ 
    TransferGroup = BackgroundTransferGroup.CreateGroup(groupKey), 
}; 

var download = downloader.CreateDownload(source, destinationFile); 

download.TransferGroup.TransferBehavior = BackgroundTransferBehavior.Serialized; 

的问题是,当用户开始超过50下载的

download.TransferGroup.TransferBehavior = BackgroundTransferBehavior.Serialized; 

行代码抛出Only up to 50 groups can be configured异常。

例外情况,可能是BackgroundDownloader限制(没有关于MSDN上的信息当然)将会很好,如果它是一个有50个运行下载组的限制。

的问题是,当下载完成的异常也会发生。

一个例子:用户发起49个下载,所有的光洁度的成功。然后用户再次启动1次下载,一切正常。然后用户再次启动1次下载,并抛出此异常。尽管没有50个下载组已经在运行。自从应用程序的明星以来,已经创建了50个下载组。

有没有一种方式,他们完成时,“删除”的群体?在手动下载之后,我是否必须处理群组?是一个WinRT错误(我不会感到惊讶)?

回答

0

目前我知道没有办法删除完成的BackgroundTransferGroup。 此外,因为它说的MSDN(https://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.backgroundtransfer.backgroundtransfergroup.aspx):

的Windows 8.1和Windows Server 2012 R2的支持为整个系统最多50个独特的传输组。因此,应用应为应用创建的所有传输组重新使用唯一ID或少量唯一ID。如果系统上创建了超过50个传输组,应用程序将处于不可恢复状态。

虽然MS不限制组的数量为一个应用程序(超出系统限制),这意味着一个人要小心,他们有多少组创建并找到一个可以接受的机制来重用他们。

上述的限制,你可能会发现自己限制并发下载(意群)的最大数量同时出现,或分组的下载到一个大的应用程序组,或不进行分组它们。

+0

这很糟糕..一个大团体/没有团体是不可接受的,因为有声书用例描述..重用团体真的要求麻烦 –

+1

重用团体(跟踪你的团体名称)是唯一可用的解决方案在这一刻。 – kiewic