C#向线程中传递多个参数的解决方法(两种)

42 篇文章 1 订阅

C#向线程中传递多个参数的解决方法(两种)

 更新时间:2016年07月27日 11:02:42   投稿:mrr  

这篇文章主要介绍了C#向线程中传递多个参数的解决方法(两种)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

 

问题:

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

1

2

3

4

5

6

Thread t = new Thread(new ParameterizedThreadStart(newthread));

t.start(参数);

void newthread(object)

{

.............

}

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

1

2

3

4

void method(int begin,int end)

{

..................

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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)

{

...............

}

}

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

1

2

3

4

5

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方法的重载

1

2

3

4

5

6

7

void method(object o)

{

//此处对传进来的参数进行处理

int[] p = (int[])o;

//调用原来的method方法

method(p[0],p[1]);

}

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

1

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

最后新建线程进行调用

1

2

THread t = new Thread(new ParameterizedThreadStart(method))

t.start(para);

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

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

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值