private static string GetRealFileName(DownloadInfo dlInfo) { //创建正式文件名,如果已存在则加数字序号创建,避免覆盖 var fileIndex = 0; var realFilePath = Path.Combine(dlInfo.saveDir, dlInfo.fileName); while (File.Exists(realFilePath)) { realFilePath = Path.Combine(dlInfo.saveDir, string.Format("{0}_{1}", fileIndex++, dlInfo.fileName)); } return(realFilePath); }
private void StartTask(DownloadInfo dlInfo) { this.dls = new List <DownloadService>(); if (dlInfo.TaskInfoList != null) { foreach (var item in dlInfo.TaskInfoList) { var dl = new DownloadService(); dl.OnDownload += OnDownloadHandler; dls.Add(dl); dl.Start(item, dlInfo.isReStart); } } }
public static void Download(string URL, string path) { var downloadInfo = new DownloadInfo(); downloadInfo.saveDir = path; downloadInfo.downloadUrlList = new List <string> { URL }; downloadInfo.taskCount = 1; downloadInfo.IsSupportMultiThreading = true; var downloadManager = new DownloadManager(downloadInfo); downloadManager.OnDownload += DownloadManager_OnDownload;; downloadManager.OnStart += DownloadManager_OnStart;; downloadManager.OnStop += DownloadManager_OnStop;; downloadManager.OnFinsh += DownloadManager_OnFinsh; }
private void GetTaskInfo(DownloadInfo dlInfo) { var pieceSize = (dlInfo.count) / dlInfo.taskCount; dlInfo.TaskInfoList = new List <TaskInfo>(); var rand = new Random(); var urlIndex = 0; for (int i = 0; i <= dlInfo.taskCount + 1; i++) { var from = (i * pieceSize); if (from >= dlInfo.count) { break; } var to = from + pieceSize; if (to >= dlInfo.count) { to = dlInfo.count; } dlInfo.TaskInfoList.Add( new TaskInfo { method = dlInfo.method, downloadUrl = dlInfo.downloadUrlList[urlIndex++], filePath = Path.Combine(dlInfo.saveDir, dlInfo.tempFileName + i + ".temp"), fromIndex = from, toIndex = to }); if (urlIndex >= dlInfo.downloadUrlList.Count) { urlIndex = 0; } } }
public DownloadManager(DownloadInfo dlInfo) { this.dlInfo = dlInfo; }