winform採集網站美女圖片程式---多線程篇

來源:互聯網
上載者:User

標籤:

設定思路: 採集目標: http://www.8kmm.com,   已知網址列表(List儲存),  應用多線程(Thread)讀取該列表, 擷取url時不能重複(加鎖Lock). 允許無序採集!

多線程核心代碼:

#region 全域變數        //線程列表        List<Thread> threadslList = new List<Thread>();        //Url列表        List<string> uUrls = new List<string>();        //處理完畢的列表        List<string> OkUrls = new List<string>();        //成功取得的美女圖片數量         public int ImgCount = 0;#endregion//取圖開始 按鈕事件 private void lbtnGetWebImgStart_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)        {            lbtnGetWebImgStart.Enabled = false;            GetWebSiteImg();        }//取圖停止 按鈕事件        private void lbtnGetWebImgStop_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)        {            try            {                foreach (Thread t in threadslList)                {                    if (t != null)                    {                        t.Abort();                    }                }            }            catch (Exception ex)            {                WriteLog("停止失敗:" + ex.Message);            }            finally            {                lbtnGetWebImgStart.Enabled = true;            }        }        /// <summary>        /// 擷取圖片主方法        /// </summary>        private void GetWebSiteImg()        {            try            {                ImgCount = 0;                OkUrls.Clear();                uUrls.Clear();                threadslList.Clear(); //先初始化以上                string[] urls = txtUrl.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);                 lblC.Text = urls.Length.ToString(CultureInfo.InvariantCulture);                uUrls = new List<string>(urls);                for (int i = 0; i < int.Parse(numThreadUD.Text); i++) // 迴圈建立線程                {                    Thread t = new Thread(Task);                    t.Name = i.ToString();                    t.IsBackground = true;                    threadslList.Add(t);                    t.Start();                }             }            catch (Exception ex)            {                WriteLog(ex.Message);            }         }   public void Task()        {            while (uUrls.Count > 0)            {                lblMsg.Text = string.Format("剩餘:{0},已訪問:{1},當前線程數:{2}", uUrls.Count, (OkUrls.Count + 1), threadslList.Count);                string url = GetUrl();                if (url == "")                {                    break;                }                else                {                    if (GetHttpImg(url) == 200)//只有狀態200才是正常的, GetHttpImg是我封裝的方法, 擷取網頁, 正則取得所有合規範的圖片.                     {                        OkUrls.Add(url);                        lblInfoStart.Text = (int.Parse(lblInfoStart.Text) + 1).ToString(CultureInfo.InvariantCulture);                        WriteHtml(txtUrl.Text);                        if (lblC.Text == lblInfoStart.Text)//判斷當前數量是否已是總數.                         {                            lblMsg.Text = "完成";                        }                    }                }            }        }            /// <summary>        /// 線程加鎖,防止多個線程同時從list裡面取出第一個        /// </summary>        /// <returns></returns>        public string GetUrl()        {            lock ("GetUrl")            {                if (uUrls.Count > 0)                {                    string url = uUrls[0];                    uUrls.RemoveAt(0);                    return url;                }                else                {                    return "";                }            }        }

 

winform採集網站美女圖片程式---多線程篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.