/// <summary> /// 下载中 /// </summary> private void StartDownLoad() { //是否超过最大的队列 if (_downingPicCount < _maxtask) { List <string> imgurls = HttpHelper.GetHtmlImageUrlList(LoadingUrls.FirstOrDefault()); UsedUrls.Add(LoadingUrls.FirstOrDefault()); LoadingUrls.RemoveAt(0); foreach (string url in imgurls) { if (!UsedImgUrls.Contains(url)) { //创建异步下载 DownloadHelper helper = new DownloadHelper(); StopTimeHandler stop = new StopTimeHandler(helper.DowloadImg); AsyncCallback callback = new AsyncCallback(onDownLoadFinish); IAsyncResult asyncResult = stop.BeginInvoke(url, callback, "--下载完成 \r\n"); //链接载入已使用 UsedImgUrls.Add(url); TipStartDownLoad(); } } imgurls.Clear(); TextUrlChange(""); } else { Thread.Sleep(5000); TextResultChange("-----------任务过多,搜集程序休眠5秒 \r\n"); } DownLoading(); }
/// <summary> /// 下载成功 /// </summary> /// <param name="asyncresult"></param> private void onDownLoadFinish(IAsyncResult asyncresult) { AsyncResult result = (AsyncResult)asyncresult; StopTimeHandler del = (StopTimeHandler)result.AsyncDelegate; string data = (string)result.AsyncState; string name = del.EndInvoke(result); TextResultChange(name + data); _downLoadPicCount++; _downingPicCount--; TipDownLoad(); }