// 结束一个下载任务,归还并发数 public void FinishDownloadTask(DownloadInfo info) { info.isFinished = true; if (info.onComplete != null) { info.onComplete(info); } m_DownloadingTasks.Remove(info.fileName); --downloadThreads; }
// 重试下载任务 Warning:只有下载器需要调用这个借口,业务层不要调用 public void RetryDownload(DownloadInfo info) { if (info.retry > 0) { info.retry -= 1; pendingDownloads.Enqueue(info); m_DownloadingTasks.Remove(info.fileName); --downloadThreads; } else { FinishDownloadTask(info); } }
void Update() { if (pendingDownloads.Count > 0) { int freeThreads = maxDownloads - downloadThreads; for (int i = 0; i < freeThreads; ++i) { if (pendingDownloads.Count > 0) { DownloadInfo info = pendingDownloads.Dequeue(); StartTask(info); } } } }
public DownloadingTask(DownloadInfo info) { this.DownloadInfo = info; }
public BreakPointDownloader(DownloadInfo info, Dictionary <string, DownloadingTask> tasks) { this.m_DownloadInfo = info; Debug.Log("start breakpoint download:" + this.m_DownloadInfo.tempPath); }