本文以實例演示了C#線程池的簡單實現方法。程序中定義了一個對象類,用以包裝參數,實現多個參數的傳遞。成員屬性包括兩個輸入參數和一個輸出參數。代碼簡單易懂,備有注釋便于理解。
具體實現代碼如下:
using System;using System.Threading;//定義對象類,用以包裝參數,實現多個參數的傳遞class Packet{ //成員屬性包括兩個輸入參數和一個輸出參數 protected internal String inval1; protected internal String inval2; protected internal String outval;}class ThreadPoolExam{ //定義執行相同內容的兩個方法 public void Task1(object Obj) { //聲明Packet類對象,用以傳遞參數 Packet PacketObj; PacketObj = (Packet)Obj; Console.WriteLine("任務一中的第一個輸入參數:" + PacketObj.inval1); Console.WriteLine("任務一中的第二個輸入參數:" + PacketObj.inval2); //為輸出參數賦值 PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2; } public void Task2(object Obj) { Packet PacketObj; PacketObj = (Packet)Obj; Console.WriteLine("任務二中的第一個輸入參數:" + PacketObj.inval1); Console.WriteLine("任務二中的第二個輸入參數:" + PacketObj.inval2); PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2; } static void Main() { //聲明兩個Packet對象,并為輸入參數賦值 Packet PacketObj1 = new Packet(); Packet PacketObj2 = new Packet(); PacketObj1.inval1 = "Task 1 - 1"; PacketObj1.inval2 = "Task 1 - 2"; PacketObj2.inval1 = "Task 2 - 1"; PacketObj2.inval2 = "Task 2 - 2"; ThreadPoolExam tps = new ThreadPoolExam(); //將方法放入線程池的隊列中 ThreadPool.QueueUserWorkItem(new WaitCallback(tps.Task1), PacketObj1); ThreadPool.QueueUserWorkItem(new WaitCallback(tps.Task2), PacketObj2); Console.ReadLine(); }}
新聞熱點
疑難解答