欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现线程池的简单示例

程序员文章站 2024-02-20 22:21:10
本文以实例演示了c#线程池的简单实现方法。程序中定义了一个对象类,用以包装参数,实现多个参数的传递。成员属性包括两个输入参数和一个输出参数。代码简单易懂,备有注释便于理解。...

本文以实例演示了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();
 }
}