手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#向线程中传递多个参数的解决方法(两种)
C#向线程中传递多个参数的解决方法(两种)
摘要:问题:对于多线程编程,很多时候往往需要向线程中传递多个参数,而C#中的线程只接收1个object类型的参数(如下):Threadt=newT...

问题:

对于多线程编程,很多时候往往需要向线程中传递多个参数,而C#中的线程只接收1个object类型的参数(如下):

Thread t = new Thread(new ParameterizedThreadStart(newthread)); t.start(参数); void newthread(object) { ............. }

而现在需要往线程中传递多个参数,比如method方法想用单独的线程来跑

void method(int begin,int end) { .................. }

解决办法1:新建一个跑方法的类

class myclass { private int begin; public int begin { set{this.begin=value;} } private int end; public int end { set{this.end=value;} } public run() { method(begin,end); } private method(int begin,int end) { ............... } }

然后新建一个该类实例,赋值之后就可以跑了,代码如下;

myclass c = new myclass(); c.begin=100; c.end=10000; Thread t = new Thread(new Threadstart(c.run)) t.start();

2、解决方法2:将数组或集合实例作为参数传入

目前正在做一个多线程的软件,用到了这部分,感觉每次都要新建类,比较麻烦,查了网上主流都是解决方法1中的方法,后来自己琢磨出另一个方法,就是尽管新的线程只能传1个参数进去,但是我们可以传一个集合或者数组类的参数进去,这样就可以解决一次向新线程中传递多个参数的问题了。

同样,对于上面的method的方法,需要传递2个int类型的整数,首先添加一个method方法的重载

void method(object o) { //此处对传进来的参数进行处理 int[] p = (int[])o; //调用原来的method方法 method(p[0],p[1]); }

再将要传递的参数用数组或集合方式储存起来

int para[]=new int[2]{100,10000};

最后新建线程进行调用

THread t = new Thread(new ParameterizedThreadStart(method)) t.start(para);

这样就可以达到将2个参数传递入线程的目的了。

传递的参数类型也可以用List<>或其他集合,传递进去的这些参数的类型都是相同的,对于不同的类型,可以考虑采用List<object>或者object[] 的方式传进去,在重载的方法中再对参数进行处理即可。

以上所述是小编给大家介绍的C#向线程中传递多个参数的解决方法(两种) ,希望对大家有所帮助,如果大家有任何疑问请给我们留言,小编会及时回复大家的。在此也非常感谢大家对查字典教程网的支持!

【C#向线程中传递多个参数的解决方法(两种)】相关文章:

C#删除文件目录或文件的解决方法

C#设置子窗体在主窗体中居中显示解决方案

C#中接口(interface)的理解

C#可选参数的相关使用

C# 去除首尾字符或字符串的方法

c#循环中产生伪随机数

C#中Web.Config加密与解密的方法

C# 禁用鼠标中间键的方法

c#各种Timer类的区别与用法介绍

基于使用递归推算指定位数的斐波那契数列值的解决方法

精品推荐
分类导航