C#实现线程池的简单示例
本文以实例演示了C#线程池的简单实现方法。程序中定义了一个对象类,用以包装参数,实现多个参数的传递。成员属性包括两个输入参数和一个输出参数。代码简单易懂,备有注释便于理解。
具体实现代码如下:
usingSystem;
usingSystem.Threading;
//定义对象类,用以包装参数,实现多个参数的传递
classPacket
{
//成员属性包括两个输入参数和一个输出参数
protectedinternalStringinval1;
protectedinternalStringinval2;
protectedinternalStringoutval;
}
classThreadPoolExam
{
//定义执行相同内容的两个方法
publicvoidTask1(objectObj)
{
//声明Packet类对象,用以传递参数
PacketPacketObj;
PacketObj=(Packet)Obj;
Console.WriteLine("任务一中的第一个输入参数:"+PacketObj.inval1);
Console.WriteLine("任务一中的第二个输入参数:"+PacketObj.inval2);
//为输出参数赋值
PacketObj.outval=PacketObj.inval1+""+PacketObj.inval2;
}
publicvoidTask2(objectObj)
{
PacketPacketObj;
PacketObj=(Packet)Obj;
Console.WriteLine("任务二中的第一个输入参数:"+PacketObj.inval1);
Console.WriteLine("任务二中的第二个输入参数:"+PacketObj.inval2);
PacketObj.outval=PacketObj.inval1+""+PacketObj.inval2;
}
staticvoidMain()
{
//声明两个Packet对象,并为输入参数赋值
PacketPacketObj1=newPacket();
PacketPacketObj2=newPacket();
PacketObj1.inval1="Task1-1";
PacketObj1.inval2="Task1-2";
PacketObj2.inval1="Task2-1";
PacketObj2.inval2="Task2-2";
ThreadPoolExamtps=newThreadPoolExam();
//将方法放入线程池的队列中
ThreadPool.QueueUserWorkItem(newWaitCallback(tps.Task1),PacketObj1);
ThreadPool.QueueUserWorkItem(newWaitCallback(tps.Task2),PacketObj2);
Console.ReadLine();
}
}