public void CheckDownLoadList() { LoggerHelper.Debug("核对下载列表", true, 0); if (this.tasks.Count != 0) { int num = 0; foreach (DownloadTask task in this.tasks) { LoggerHelper.Debug("核对任务:" + task.FileName, true, 0); if (!(!task.bFineshed || task.bDownloadAgain)) { LoggerHelper.Debug("已经完成不用从下:" + task.FileName, true, 0); num++; } else { string directoryName = Path.GetDirectoryName(task.FileName); if (!((directoryName == null) || Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); LoggerHelper.Debug("下载目录不存在,创建目录:" + directoryName, true, 0); } if (!BreakPoint) { LoggerHelper.Debug("新的下载或从新下载:" + task.FileName, true, 0); this._webClient.DownloadFileAsync(new Uri(task.Url), task.FileName, task.Url); } else { LoggerHelper.Debug("断点下载:" + task.FileName, true, 0); ThreadDownloadBreakPoint point = new ThreadDownloadBreakPoint(this, task); new Thread(new ThreadStart(point.Download)).Start(); LoggerHelper.Debug("开始断点下载:" + task.FileName, true, 0); } break; } } if (num > (this.tasks.Count - 1)) { LoggerHelper.Debug("下载的数据包数量已经达到要求的,删除所有任务和全部任务完成的回调", true, 0); this.tasks.Clear(); this.tasks = null; if (this.AllDownloadFinished != null) { this.AllDownloadFinished(); this.AllDownloadFinished = null; } } } }
/// <summary> /// 检测下载列表 /// </summary> public void CheckDownloadList() { if (Tasks.Count == 0) { //下载列表为空 return; } //已经下载完成的数目 int finishedCount = 0; foreach (var task in Tasks) { if (task.bFineshed && !task.bDownloadAgain) { finishedCount++; } else { //是否文件存放的目录已经存在,如果不存在就创建 string dir = Path.GetDirectoryName(task.FileName); if (!string.IsNullOrEmpty(dir) && !Directory.Exists(task.FileName)) { Directory.CreateDirectory(dir); } //开始断点下载 ThreadDownloadBreakPoint bpDownload = new ThreadDownloadBreakPoint(this, task); Thread t = new Thread(bpDownload.Download); t.Start(); } break; } if (finishedCount > m_listTasks.Count - 1) { m_listTasks.Clear(); m_listTasks = null; if (AllDownloadFinished != null) { AllDownloadFinished(); AllDownloadFinished = null; } } }
//开始、继续、从新下载 public void CheckDownLoadList() { LoggerHelper.Debug("核对下载列表"); if (tasks.Count == 0) { return; } var finishedCount = 0;//已经完成的数目 foreach (var task in tasks) { LoggerHelper.Debug("核对任务:" + task.FileName); if (task.bFineshed && !task.bDownloadAgain) { LoggerHelper.Debug("已经完成不用从下:" + task.FileName); finishedCount++; } else { //判断下载文件的文件夹是否存在 var dirName = Path.GetDirectoryName(task.FileName); if (dirName != null && !Directory.Exists(dirName)) { Directory.CreateDirectory(dirName); LoggerHelper.Debug("下载目录不存在,创建目录:" + dirName); } //重新下载的,或者新的下载 if (!BreakPoint) { LoggerHelper.Debug("新的下载或从新下载:" + task.FileName); _webClient.DownloadFileAsync(new Uri(task.Url), task.FileName, task.Url); } else { LoggerHelper.Debug("断点下载:" + task.FileName); //Action action = () => DownloadFileBreakPoint(task.Url, task.FileName); //var t = new Thread(action); var download = new ThreadDownloadBreakPoint(this, task); var t = new Thread(download.Download); t.Start(); LoggerHelper.Debug("开始断点下载:" + task.FileName); } break; } } //Action actionFinish = () => //{ //如果全部完成,修改原来等于判断,不然最后一个或者只有一个下载任务时不会执行自己的finish if (finishedCount > tasks.Count - 1) { LoggerHelper.Debug("下载的数据包数量已经达到要求的,删除所有任务和全部任务完成的回调"); tasks.Clear(); tasks = null; if (AllDownloadFinished != null) { AllDownloadFinished(); AllDownloadFinished = null; } } //}; //actionFinish.Invoke(); }
//开始、继续、从新下载 public void CheckDownLoadList() { LoggerHelper.Debug("核对下载列表"); if (tasks.Count == 0) return; var finishedCount = 0;//已经完成的数目 foreach (var task in tasks) { LoggerHelper.Debug("核对任务:" + task.FileName); if (task.bFineshed && !task.bDownloadAgain) { LoggerHelper.Debug("已经完成不用从下:" + task.FileName); finishedCount++; } else { //判断下载文件的文件夹是否存在 var dirName = Path.GetDirectoryName(task.FileName); if (dirName != null && !Directory.Exists(dirName)) { Directory.CreateDirectory(dirName); LoggerHelper.Debug("下载目录不存在,创建目录:" + dirName); } //重新下载的,或者新的下载 if (!BreakPoint) { LoggerHelper.Debug("新的下载或从新下载:" + task.FileName); _webClient.DownloadFileAsync(new Uri(task.Url), task.FileName, task.Url); } else { LoggerHelper.Debug("断点下载:" + task.FileName); //Action action = () => DownloadFileBreakPoint(task.Url, task.FileName); //var t = new Thread(action); var download = new ThreadDownloadBreakPoint(this, task); var t = new Thread(download.Download); t.Start(); LoggerHelper.Debug("开始断点下载:" + task.FileName); } break; } } //Action actionFinish = () => //{ //如果全部完成,修改原来等于判断,不然最后一个或者只有一个下载任务时不会执行自己的finish if (finishedCount > tasks.Count - 1) { LoggerHelper.Debug("下载的数据包数量已经达到要求的,删除所有任务和全部任务完成的回调"); tasks.Clear(); tasks = null; if (AllDownloadFinished != null) { AllDownloadFinished(); AllDownloadFinished = null; } } //}; //actionFinish.Invoke(); }