0

我正在可可中实现下载管理器。用户可以添加多个下载请求,请求管理器将在面板中显示请求的进度。我遇到了关于队列中请求的暂停/恢复的问题。

为简单起见,假设最大并发操作数为 1,我添加了几个请求,顺序为:1、2、3、4、5。如果没有中断,则从1到5依次下载请求。假设我暂停了请求 1,请求 2 应该继续下载。那段时间,我恢复了请求1。因此,请求2完成后,我希望请求1可以在请求3之前继续。

这里的问题是:对于我暂停时的单个请求,该请求实际上已被取消。当我恢复请求时,一个新的请求被初始化然后开始。在操作队列中,[self cancel]如果请求被暂停,我现在发送,以便可以启动下一个请求。但是,如果恢复了,我不知道该怎么办。取消的请求无法再次添加到队列中。如果我创建了一个新的并将其添加到队列中,我如何像以前一样保证优先级?

请提供有关如何操作的提示。

谢谢

4

1 回答 1

0

目前我自己使用以下方法制作解决方案:

  1. 发出一个继承自的自定义请求ASIHttpRequest
  2. 制作一个NAMutableArray以包含所有请求;
  3. 如果添加了一个请求,则枚举数组以查看是否正在执行最大请求。如果没有,请在自己的队列中启动请求。如果超过最大值,只需将请求添加到数组中,并将其状态设置为waiting;
  4. 如果一个请求正在完成或失败,则枚举数组以通过添加 time 和 status 来查看位于第一个位置的请求waiting
于 2012-12-12T05:38:58.160 回答