/// <summary> /// do in a separate thread /// 下载缩略图线程 /// </summary> /// <param name="page"></param> /// <param name="count"></param> /// <param name="word"></param> public void PreFetchPage(int page, int count, string word, ImageSite site) { (new Thread(new ThreadStart(() => { try { preFetchedPage = site.GetPageString(page, count, word, proxy); prePage = page; preCount = count; preWord = word; preSite = site; List <Img> imgs = site.GetImages(preFetchedPage, proxy); //获得所有图片列表后反馈得到的数量 PreListLoaded(imgs.Count, null); if (imgs.Count < 1) { return; } SessionClient sweb = new SessionClient(); SessionHeadersCollection shc = new SessionHeadersCollection(); shc.Accept = null; shc.ContentType = SessionHeadersValue.ContentTypeAuto; shc.Add("Accept-Ranges", "bytes"); shc.Referer = site.Referer; imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false); //预加载缩略图 foreach (HttpWebRequest req1 in imgReqs) { if (req1 != null) { req1.Abort(); } } preFetchedImg.Clear(); imgReqs.Clear(); //prefetch one by one int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count; for (int i = 0; i < cacheCount; i++) { WebResponse res = sweb.GetWebResponse(imgs[i].PreviewUrl, proxy, 9000, shc); System.IO.Stream str = res.GetResponseStream(); if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl)) { preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str)); } } } catch { //Console.WriteLine("useless"); } }))).Start(); }
/// <summary> /// do in a separate thread /// 下载缩略图线程 /// </summary> /// <param name="page"></param> /// <param name="count"></param> /// <param name="word"></param> public void PreFetchPage(int page, int count, string word, ImageSite site) { (new Thread(new ThreadStart(() => { try { preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy); prePage = page; preCount = count; preWord = word; preSite = site; List <Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy); //获得所有图片列表后反馈得到的数量 PreListLoaded(imgs.Count, null); if (imgs.Count < 1) { return; } imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false); //预加载缩略图 foreach (HttpWebRequest req1 in imgReqs) { if (req1 != null) { req1.Abort(); } } preFetchedImg.Clear(); imgReqs.Clear(); //prefetch one by one int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count; for (int i = 0; i < cacheCount; i++) { HttpWebRequest req = WebRequest.Create(imgs[i].PreviewUrl) as HttpWebRequest; imgReqs.Add(req); req.Proxy = MainWindow.WebProxy; req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"; req.Referer = site.Referer; WebResponse res = req.GetResponse(); System.IO.Stream str = res.GetResponseStream(); if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl)) { preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str)); } } } catch { //Console.WriteLine("useless"); } }))).Start(); }
/// <summary> /// do in a separate thread /// </summary> /// <param name="page"></param> /// <param name="count"></param> /// <param name="word"></param> public void PreFetchPage(int page, int count, string word, ImageSite site) { (new Thread(new ThreadStart(() => { try { //List<Img> imgs = site.GetImages(page, count, word, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, MainWindow.WebProxy, true); preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy); prePage = page; preCount = count; preWord = word; preSite = site; List <Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy); imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false); //预加载缩略图 foreach (System.Net.HttpWebRequest req1 in imgReqs) { if (req1 != null) { req1.Abort(); } } preFetchedImg.Clear(); imgReqs.Clear(); //prefetch one by one int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count; for (int i = 0; i < cacheCount; i++) { System.Net.HttpWebRequest req = System.Net.WebRequest.Create(imgs[i].PreviewUrl) as System.Net.HttpWebRequest; imgReqs.Add(req); req.Proxy = MainWindow.WebProxy; req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"; req.Referer = site.Referer; System.Net.WebResponse res = req.GetResponse(); System.IO.Stream str = res.GetResponseStream(); if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl)) { preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str)); } } } catch { //Console.WriteLine("useless"); } }))).Start(); }
/// <summary> /// do in a separate thread /// </summary> /// <param name="page"></param> /// <param name="count"></param> /// <param name="word"></param> public void PreFetchPage(int page, int count, string word, ImageSite site) { (new Thread(new ThreadStart(() => { try { //List<Img> imgs = site.GetImages(page, count, word, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, MainWindow.WebProxy, true); preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy); prePage = page; preCount = count; preWord = word; preSite = site; List<Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy); imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false); //预加载缩略图 foreach (System.Net.HttpWebRequest req1 in imgReqs) { if (req1 != null) req1.Abort(); } preFetchedImg.Clear(); imgReqs.Clear(); //prefetch one by one int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count; for (int i = 0; i < cacheCount; i++) { System.Net.HttpWebRequest req = System.Net.WebRequest.Create(imgs[i].PreviewUrl) as System.Net.HttpWebRequest; imgReqs.Add(req); req.Proxy = MainWindow.WebProxy; req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"; req.Referer = site.Referer; System.Net.WebResponse res = req.GetResponse(); System.IO.Stream str = res.GetResponseStream(); if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl)) { preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str)); } } } catch { //Console.WriteLine("useless"); } }))).Start(); }