private void CheckCompleted(object obj, EventArgs arg) { if (obj.GetType().Name == "RefreshThread") { RefreshThread thread = obj as RefreshThread; if (thread.Status == "Completed") { this.CompletedCount++; } } if (obj.GetType().Name == "WbRefreshThread") { WbRefreshThread thread = obj as WbRefreshThread; if (thread.Status == "Completed") { this.CompletedCount++; } } if (this.CompletedCount == this.threads.Count) { this.Completed(this.Completed, new EventArgs()); //发出警告 } }
private static void Refresh(WbRefreshThread refresher, Proxy proxy) { WebBrowserEx wbWebBrowser = new WebBrowserEx(); wbWebBrowser.ScriptErrorsSuppressed = true; if (refresher.useProxy) { wbWebBrowser.ProxyServer = proxy.IpAndPort; } else { wbWebBrowser.ProxyServer = ""; } wbWebBrowser.Navigate(refresher.Url); Stopwatch sw = new Stopwatch(); sw.Start(); while (wbWebBrowser.ReadyState < WebBrowserReadyState.Complete) { Application.DoEvents(); if (sw.ElapsedMilliseconds > refresher.timeOut * 1000) { throw new WebException(WebExceptionStatus.Timeout.ToString()); } } sw.Stop(); refresher.SuccessCount++; refresher.Description = wbWebBrowser.ProxyServer + "刷新成功!"; }
private static void DoWork(object data) { WbRefreshThread refresher = (WbRefreshThread)data; try { List <Proxy> pList = refresher.proxyList; foreach (Proxy proxy in pList) { refresher.Description = proxy.IpAndPort + "开始刷新..."; try { Refresh(refresher, proxy); RefreshForm fm = (RefreshForm)Application.OpenForms["RefreshForm"]; if (null != fm) { fm.UpdateDataGrid(); } } catch (Exception exx) { refresher.Description = "出错啦:" + exx.Message; refresher.FailedCount++; } refresher.Status = refresher.thread.ThreadState.ToString(); } refresher.Status = "Completed"; } catch (Exception ex) { // 线程被放弃 refresher.Description = "出错啦:" + ex.Message; refresher.FailedCount++; refresher.Status = "Completed"; Console.WriteLine(ex.Message); //WriteException(ex); } finally { refresher.TotalCount++; refresher.OnCompleted(); } }
public void Stop() { foreach (object thread in this.Threads) { if (thread.GetType().Name == "RefreshThread") { RefreshThread t = (RefreshThread)thread; t.Abort(); } if (thread.GetType().Name == "WbRefreshThread") { WbRefreshThread t = (WbRefreshThread)thread; t.Abort(); } } this.Completed(this.Completed, new EventArgs()); //发出警告 }
public void Start() { foreach (string url in urlList) { if (this.refreshType == "Quickly") { RefreshThread thread = new RefreshThread(proxyList, url, this.SleepTime, this.TimeOut); thread.Completed += new RefreshThread.CompletedEventHandler(this.CheckCompleted); thread.Start(); threads.Add(thread); } else { WbRefreshThread thread = new WbRefreshThread(proxyList, url, useProxy, this.TimeOut); thread.Completed += new WbRefreshThread.CompletedEventHandler(this.CheckCompleted); thread.Start(); threads.Add(thread); } } }