时间:2021-05-20
问题:
对于多线程编程,很多时候往往需要向线程中传递多个参数,而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#向线程中传递多个参数的解决方法(两种) ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#实现向多线程传参的三种方式。分享给大家供大家参考,具体如下:从《C#高级编程》了解到给线程传递参数有两种方式,一种方式是使用带Paramete
本文以实例演示了C#线程池的简单实现方法。程序中定义了一个对象类,用以包装参数,实现多个参数的传递。成员属性包括两个输入参数和一个输出参数。代码简单易懂,备有注
1.给数据库语句参数传递向数据库操作语句传递参数可以通过存储过程实现,这里给出另外两种简便易捷的方法:可以在C#中通过字符串操作将参数直接传入SQL语句变量中,
C/C++函数参数传递机制详解及实例概要:C/C++的基本参数传递机制有两种:值传递和引用传递,我们分别来看一下这两种的区别。(1)值传递过程中,需在堆栈中开辟
解决方法:在android向C#后台发送图片的时候,把图片转成字符串发送的时候出现base-64字符数组的无效长度错误应该在传递参数前,使用Replace("+