C#實現(xiàn)線程池的簡單示例
更新時間:2014年07月29日 09:43:52 投稿:shichen2014
這篇文章主要介紹了C#實現(xiàn)線程池的簡單示例,代碼簡潔易懂,有助于初學的朋友更好的理解C#
的線程池,需要的朋友可以參考下
本文以實例演示了C#線程池的簡單實現(xiàn)方法。程序中定義了一個對象類,用以包裝參數(shù),實現(xiàn)多個參數(shù)的傳遞。成員屬性包括兩個輸入?yún)?shù)和一個輸出參數(shù)。代碼簡單易懂,備有注釋便于理解。
具體實現(xiàn)代碼如下:
using System;
using System.Threading;
//定義對象類,用以包裝參數(shù),實現(xiàn)多個參數(shù)的傳遞
class Packet
{
//成員屬性包括兩個輸入?yún)?shù)和一個輸出參數(shù)
protected internal String inval1;
protected internal String inval2;
protected internal String outval;
}
class ThreadPoolExam
{
//定義執(zhí)行相同內(nèi)容的兩個方法
public void Task1(object Obj)
{
//聲明Packet類對象,用以傳遞參數(shù)
Packet PacketObj;
PacketObj = (Packet)Obj;
Console.WriteLine("任務一中的第一個輸入?yún)?shù):" + PacketObj.inval1);
Console.WriteLine("任務一中的第二個輸入?yún)?shù):" + PacketObj.inval2);
//為輸出參數(shù)賦值
PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2;
}
public void Task2(object Obj)
{
Packet PacketObj;
PacketObj = (Packet)Obj;
Console.WriteLine("任務二中的第一個輸入?yún)?shù):" + PacketObj.inval1);
Console.WriteLine("任務二中的第二個輸入?yún)?shù):" + PacketObj.inval2);
PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2;
}
static void Main()
{
//聲明兩個Packet對象,并為輸入?yún)?shù)賦值
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();
}
}
相關(guān)文章
C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例
這篇文章主要介紹了C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
DevExpress實現(xiàn)GridControl根據(jù)列選中一行
這篇文章主要介紹了DevExpress實現(xiàn)GridControl根據(jù)列選中一行,比較實用的功能,需要的朋友可以參考下2014-08-08

