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(); } }