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

用C#2.0實現網絡蜘蛛(WebSpider)(3)

編輯:關於C語言

四、線程類的實現

要想使網絡蜘蛛在有限的硬件環境下盡可能地提高下載速度。最廉價和快捷的方法就是使用多線程。在.Net framework2.0中提供了豐富的線程功能。其中的核心線程類是Thread。一般可使用如下的代碼創建並運行一個線程:

在C#中使用線程的演示代碼

private void fun()
{
// 線程要執行的代碼
}
public void testThread()
{
Thread thread;
thread = new Thread(fun); // 創建一個Thread對象,並將fun設為線程運行的方法
thread.Start(); // 運行一個線程
}

雖然上面的代碼比較簡單地創建並運行了一個線程,但是這段代碼看起來仍然不夠透明,也就是客戶端在調用線程時仍然需要顯式地使用Thread類。下面我們來實現一個用於創建線程的MyThread類。C#中的任何類只需要繼承這個類,就可以自動變成一個線程類。MyThread類的代碼如下:

MyThread類的實現代碼

// 任何C#類繼承MyThread後,就會自動變成一個線程類
class MyThread
{
private Thread thread;
public MyThread()
{
thread = new Thread(run); // 創建Thread對象
}
// 用於運行線程代碼的方法,MyThread的子類必須覆蓋這個方法
public virtual void run()
{
}
public void start()
{
thread.Start(); // 開始運行線程,也就是開始執行run方法
}
// 使當前線程休眠millisecondsTimeout毫秒
public void sleep(int millisecondsTimeout)
{
Thread.Sleep(millisecondsTimeout);
}
}

我們可參照如下的代碼使用MyThread類:

測試的ThreadClass類的代碼

 class ThreadClass : MyThread
{
public override void run()
{
// 要執行的線程代碼
}
}
// 測試ThreadClass類
public void testThreadClass()
{
ThreadClass tc = new ThreadClass();
tc.start(); // 開始運行線程,也就是執行run方法
}

各位讀者可以看看,上面的代碼是不是要比直接使用Thread類更方便、直觀、易用,還有些面向對象的感覺!

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