程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現蜘蛛/爬蟲程序的多線程控制(3)

C#實現蜘蛛/爬蟲程序的多線程控制(3)

編輯:關於C語言

3.線程結束是很難判斷的,因為它總是在查找新的鏈接。用者認為可以假設:線程重復N次以後還是沒有能申請到新的Url地址,那麼可以認為它已經下載完了所有鏈接。主要代碼如下:

string url = "";
int times = 0;
while ( url == "" )//如果沒有找到符合條件的記錄,則不斷地尋找符合條件的記錄
{
url = getUrl.GetAUrl( …… );//調用GetAUrl方法,試圖得到一個url值
if ( url == "" )//如果沒有找到
{
times ++;//嘗試次數自增
continue; //進行下一次嘗試
}
if ( times > N ) //如果已經嘗試夠了次數,則退出進程
{
downloadThread[i].Abort; //退出進程
}
else//如果沒有嘗試夠次數
{
Times = 0; //嘗試次數歸零處理
}
//進行下一步針對得到的Url的處理
}

4.這個問題相對簡單,因為在問題一中已經建議,將線程聲名為類級數組,這樣就很易於控制。只要用一個for循環即可結束。代碼如下:

for( int i = 0; i < n; i++ )//關閉指定數量n的線程數
{
downloadThread[i].Abort();//逐個關閉線程
}

好了,一個蜘蛛程序就這樣完成了,在C#面前,它的實現原來如此簡單。

這裡筆者還想提醒讀者:筆者只是提供了一個思路及一個可以實現的解決方案,但它並不是最佳的,即使這個方案本身,也有好多可以改進的地方,留給讀者思考。

最後說明一下我所使用的環境:

winXP sp2 Pro

VFP 9.0

Visual Studio 2003 .Net中文企業版

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved