如何使用 Visual C# 來提交至執行緒集區的工作項目

文章翻譯 文章翻譯
文章編號: 315460 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您如何送出至執行緒集區方法,針對執行。

在.NET 的環境中每個處理程序會有執行緒集區可讓您以非同步方式執行方法。

需求


下列清單列出建議的硬體、 軟體、 網路基礎結構及所需的 Service Pack:
  • Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005
本文假設您已熟悉下列主題:
  • 在 Visual C# 程式設計語言

建立 Visual C# 應用程式使用執行緒集區

  1. 啟動 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  2. 建立新的 Visual C# Windows 應用程式專案,名為 PoolDemo。
  3. 使用工具箱將 按鈕 控制項加入至表單。[按鈕] 控制項,預設的名稱都是 button1。
  4. 在表單上按一下滑鼠右鍵,然後按一下 [檢視程式碼
  5. 貼上下列 using 指示詞,在現有 using 指示詞之後, 但 PoolDemo 命名空間宣告之前:
    using System.Threading;
    					
  6. 切換回 [設計] 檢視,然後連按兩下 button1。下列程式碼貼 button1_Click 事件處理常式中:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	WaitCallback wcb = new WaitCallback(GetSysDirSize);
    	try
    	{
    		ThreadPool.QueueUserWorkItem(wcb);
    		MessageBox.Show("The work item has been placed on the queue");
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show("Error: " + ex.Message);
    	}
    }
    					
  7. 貼上下列程式碼本文中的 Form1 類別。GetSysDirSize 方法計算儲存在系統目錄中的位元組總數目。GetSysDirSize 呼叫另一個名為 DirSize 來執行計算的方法。

    注意: 這個工作可能需要花費一些時間才能執行
    private void GetSysDirSize(object state)
    {
    	long total_length = DirSize(Environment.SystemDirectory);
    	this.Text = total_length.ToString();
    }
    
    private long DirSize(string path)
    {
    	long sz = 0;
    	System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(path);
    	
    	// List files.
    	foreach(System.IO.FileInfo f in d.GetFiles())
    	{
    		sz += f.Length;
    	}
    
    	// Recurse into directories.
    	foreach(System.IO.DirectoryInfo dx in d.GetDirectories())
    	{
    		sz += DirSize(dx.FullName);
    	}
    
    	return sz;
    }
    					

測試範例

  1. 按下 CTRL + F5 執行應用程式。
  2. 顯示表單,請按一下按鈕]。當 工作項目放置在佇列] 訊息方塊出現時,按一下 [確定] 以關閉訊息方塊,並回到主要表單。 短的延遲後總檔案大小系統目錄中的會顯示在表單的標題。延遲的時間長度取決於您的電腦和系統目錄中的檔案數目的速度。檔案大小的計算發生在執行緒上執行緒集區中。

屬性

文章編號: 315460 - 上次校閱: 2006年12月11日 - 版次: 2.3
這篇文章中的資訊適用於:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbhowtomaster kbsample kbthread KB315460 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:315460
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com