Exemplo n.º 1
0
 /// <summary>
 /// 重试下载
 /// <param name="ID">任务ID</param>
 /// </summary>
 public void ReDownload(int ID)
 {
     if (SubTasks.ContainsKey(ID))
     {
         if (SubTasks[ID].State != TaskState.载完成)
         {
             HttpDownload download = new HttpDownload
             {
                 ID          = ID,
                 DownLoadUrl = SubTasks[ID].DownLoadUrl,
                 FileName    = SubTasks[ID].FileName,
                 FilePath    = SubTasks[ID].FilePath,
                 ThreadNum   = 10,
                 From        = SubTasks[ID].From,
                 To          = SubTasks[ID].To
             };
             SubTasks[ID].StopDownload();
             download.Start();
             download.TaskCompletedEvent += TaskCompletedEvent;
             SubTasks[ID] = download;
         }
     }
 }
Exemplo n.º 2
0
 public override void Start()
 {
     if (!(FilePath != null && FileName != null && SubTaskNum != 0))
     {
         return;
     }
     State = TaskState.加速下载中;
     try
     {
         HttpWebRequest  httpWebRequest  = WebRequest.Create($"https://www.baidupcs.com/rest/2.0/pcs/stream?method=download&access_token={Program.config.Access_Token}&path=" + Uri.EscapeDataString($"{Info.path}")) as HttpWebRequest;
         HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
         ContentLength = httpWebResponse.ContentLength;
         long q = ContentLength / SubTaskNum;
         for (int i = 0; i < SubTaskNum; i++)
         {
             if (i == (SubTaskNum - 1))
             {
                 var LastSubTask = new HttpDownload
                 {
                     ID          = i,
                     DownLoadUrl = $"https://www.baidupcs.com/rest/2.0/pcs/stream?method=download&access_token={Program.config.Access_Token}&path=" + Uri.EscapeDataString($"{Info.path}"),
                     FilePath    = FilePath,
                     FileName    = FileName + ".tmp" + i.ToString(),
                     ThreadNum   = 12,
                     From        = q * i,
                     To          = ContentLength
                 };
                 LastSubTask.Start();
                 LastSubTask.TaskCompletedEvent += TaskCompletedEvent;
                 SubTasks.Add(i, LastSubTask);
                 break;
             }
             var SubTask = new HttpDownload
             {
                 ID          = i,
                 DownLoadUrl = $"https://www.baidupcs.com/rest/2.0/pcs/stream?method=download&access_token={Program.config.Access_Token}&path=" + Uri.EscapeDataString($"{Info.path}"),
                 FilePath    = FilePath,
                 FileName    = FileName + ".tmp" + i.ToString(),
                 ThreadNum   = 12,
                 From        = q * i,
                 To          = (q * (i + 1)) - 1
             };
             SubTask.Start();
             SubTask.TaskCompletedEvent += TaskCompletedEvent;
             SubTasks.Add(i, SubTask);
         }
     }
     catch (Exception ex)
     {
         if (ex is WebException)
         {
             //404 ERROR
             if (ex.Message.Contains("404"))
             {
                 MessageBox.Show("下载失败! 文件名有非法字符,请使用云管家重命名后再下载");
                 return;
             }
             //403 ERROR
             if (ex.Message.Contains("403"))
             {
                 MessageBox.Show("下载失败! 百度抽风了,你可以换个账号或者等几天再下载\r\nPS:一般来说等一天就好");
                 return;
             }
         }
         MessageBox.Show("下载时遇到未知错误: " + ex.Message + "\r\n请联系作者");
     }
 }