private void LoadDownLoadRecord() { DateTime time = DateTime.Now; SqlOperate operate = new SqlOperate(); operate.CreateOrOpenDataBase("task.db"); var list = operate.GetRecordList(); Console.WriteLine("查找消耗时间:{0}", DateTime.Now.Subtract(time).Milliseconds); time = DateTime.Now; operate.CloseDataBase(); List <DownListBox> itemList = new List <DownListBox>(); foreach (var i in list) { DownListBox downBox = new DownListBox(); downBox.deleteEvent += downItem_deleteEvent; downBox.resumeDownLoadEvent += downItem_resumeDownLoadEvent; downBox.SetMaxPage(i.PageCount); //下载最大值 downBox.Title = i.TaskName; //漫画名字 downBox.Pages = i.PageCount; downBox.CurrentPage = i.DownLoadProgress; downBox.FilePath = i.Path; itemList.Add(downBox); downlistCollection.Add(downBox); } filePanel.Controls.AddRange(itemList.ToArray()); Console.WriteLine("绘制消耗时间:{0}", DateTime.Now.Subtract(time).Milliseconds); }
private void newDownBtn_Click(object sender, EventArgs e)//新建下载 { DownListBox listBox = new DownListBox(); listBox.deleteEvent += downItem_deleteEvent; filePanel.Controls.Add(listBox); }
void downItem_deleteEvent(object sender, EventArgs args) { DownListBox listBox = sender as DownListBox; StopDownTask(listBox.Title); DeleteComicDir(listBox.FilePath); DeleteDownRecord(listBox.Title); downlistCollection.Remove(listBox); filePanel.Controls.Remove(listBox); }
void downItem_resumeDownLoadEvent(object sender, EventArgs args)//继续下载 { DownTask task = null; DownListBox listBox = sender as DownListBox; foreach (var i in taskQueue) { if (i.ComicName == listBox.Title) { task = i; } } if (task == null) { SqlOperate operate = new SqlOperate(); operate.CreateOrOpenDataBase("task.db"); var list = operate.GetRecordList(); foreach (var i in list) { if (i.TaskName == listBox.Title) { List <DownLoadFile> downList = new List <DownLoadFile>(); DownLoadFile file = new DownLoadFile(); file.ComicName = i.TaskName; file.ComicUrl = i.Url; file.SavePath = i.Path; downList.Add(file); StartNewDownLoad(downList, DecoderDistrution.GiveDecoder(i.Url), i.DownLoadProgress - 1); } } operate.CloseDataBase(); } }
private void StartNewDownLoad(List <DownLoadFile> downloadFile, PublicThing decoder)//开始全新下载 { var fullPath = ""; downlistCollection = new List <DownListBox>(); try { Task task = new Task(() => { DownListBox downlist = null; foreach (var i in downloadFile) { DownTask downTask = new DownTask(); var url = i.ComicUrl; var response = AnalyseTool.HttpGet(url); var down = decoder.GetDownImageList(response);//解析图片真实地址 if (filePanel.InvokeRequired) { this.Invoke(new Action(() => { downlist = new DownListBox(); downTask.ReferUrl = url; downlist.SetMaxPage(down.ImageList.Count); //下载最大值 downlist.Title = i.ComicName; //漫画名字 downlist.Location = new Point(0, panelPos); downlist.Pages = down.ImageList.Count; filePanel.Controls.Add(downlist); })); } downlistCollection.Add(downlist); //添加到控件集合 downTask.ComicName = i.ComicName; downTask.downLoadOneFinished += DownOneFinsihed; //下载完成一个图片 downTask.downFinished += DownAllFinished; downTask.downPaused += DownPause; downTask.ImageFiles = down.ImageList; if (File.Exists(i.SavePath) == false) { fullPath = i.SavePath + i.ComicName + "\\"; Directory.CreateDirectory(i.SavePath + i.ComicName + "\\"); } downlist.FilePath = fullPath; downTask.DownLoadPath = fullPath; time = DateTime.Now; downTask.DownLoadStart(); panelPos = panelPos + downlist.Height; } }); task.Start(); } catch (Exception ex) { Console.WriteLine("开始下载出错:{0}", ex.Message); } }
private void StartNewDownLoad(List <DownLoadFile> downloadFile, PublicThing decoder, int startIndex = 0)//开始全新下载 { var fullPath = ""; try { Task task = new Task(() => { DownListBox downItem = null; List <DownListBox> downList; downList = new List <DownListBox>(); ShowBallTip("正在解析,请稍等!", "提示"); foreach (var i in downloadFile) { DownTask downTask = new DownTask(); var url = i.ComicUrl; var response = AnalyseTool.HttpGet(url, url); decoder.currentUrl = url; if (response == "") { MessageBox.Show("下载时获取网页错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } var down = decoder.GetDownImageList(response);//解析图片真实地址 if (down == null || down.ImageList == null || down.Count == 0) { MessageBox.Show("获取网页数据失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } this.Invoke(new Action(() => { downItem = SearchDownListBox(i.ComicName); downTask.SourceUrl = url; downItem.deleteEvent += downItem_deleteEvent; downItem.resumeDownLoadEvent += downItem_resumeDownLoadEvent; downItem.SetMaxPage(down.ImageList.Count); //下载最大值 downItem.Title = i.ComicName; //漫画名字 downItem.Pages = down.ImageList.Count; filePanel.Controls.Add(downItem); })); if (downlistCollection.Contains(downItem) == false) { downlistCollection.Add(downItem);//添加到控件集合 } downTask.ComicName = i.ComicName; downTask.downLoadOneFinished += DownOnePicFinsihed;//下载完成一个图片 downTask.downFinished += DownAllFinished; downTask.downPaused += DownPause; downTask.ImageFiles = down.ImageList; if (File.Exists(i.SavePath) == false) { fullPath = i.SavePath + "\\" + i.ComicName + "\\"; Directory.CreateDirectory(i.SavePath + "\\" + i.ComicName + "\\"); } downItem.FilePath = fullPath; downTask.DownLoadPath = fullPath; downTask.DownLoadStart(startIndex); taskQueue.Add(downTask); AddDownRecord(downTask.ComicName, downTask.SourceUrl, downTask.DownLoadPath, downTask.ImageFiles.Count, 0, 0);//添加记录到数据库 downList.Add(downItem); } ShowBallTip("解析完成,开始下载!", "提示"); }); task.Start(); } catch (Exception ex) { Console.WriteLine("开始下载出错:{0}", ex.Message); } }