Exemple #1
0
        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);
        }
Exemple #2
0
 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);
         }
     }
 }
Exemple #3
0
        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;
        }
Exemple #4
0
        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;
                }
            }
        }
Exemple #5
0
 public DownloadManager(DownloadInfo dlInfo)
 {
     this.dlInfo = dlInfo;
 }