gpt4 book ai didi

c# - BackgroundDownloader 和 "Only up to 50 groups can be configured"

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:33 24 4
gpt4 key购买 nike

我有一个 WinRT 应用程序(Windows 8.1 和 Windows Phone 8.1)。我使用 BackgroundDownloader 分组下载文件。

我用的是分组下载有声读物,所以一个有声读物的所有轨道都是在一个分组中下载的,可以一次取消。每组中的下载都是串行下载(不是并行),因此用户可以从头开始收听有声读物。

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

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;

一行代码抛出最多只能配置50组异常。

异常(exception)情况,可能是 BackgroundDownloader 限制(当然 MSDN 上没有关于此的信息)会很好,如果有 50 个正在运行的下载组是一个限制。

问题是,下载完成后也会出现异常。

举例:用户发起49次下载,全部成功完成。然后用户再发起1次下载,一切正常。然后用户再发起 1 次下载并抛出此异常。虽然还没有50个下载组已经在运行了。自应用程序启动以来,仅创建了 50 个下载组。

有没有办法在完成后“删除”组?手动下载后是否必须处理这些组?是 WinRT 错误(我不会感到惊讶)?

最佳答案

目前我不知道有什么方法可以删除完成的 BackgroundTransferGroup。此外,正如它在 MSDN ( https://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.backgroundtransfer.backgroundtransfergroup.aspx ) 上所说:

Windows 8.1 and Windows Server 2012 R2 support a maximum of 50 unique transfer groups for the entire system. So an app should reuse a unique ID or a small number of unique IDs for all transfer groups created by the app. If more than 50 transfer groups are created on the system, the app will get in an unrecoverable state.

尽管 MS 不限制一个应用程序的组数(超出系统限制),这意味着人们必须小心他们创建的组数并找到一种可接受的机制来重用它们。

考虑到这些限制,您可能会发现自己限制了同时发生的并发下载(即组)的最大数量,或者将下载分组到一个大的应用程序组,或者根本不对它们进行分组。

关于c# - BackgroundDownloader 和 "Only up to 50 groups can be configured",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com