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

作者:mrr 时间:2022-08-16 19:16:30 

问题:

对于多线程编程,很多时候往往需要向线程中传递多个参数,而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,线程,参数
0
投稿

猜你喜欢

  • Java Timezone类常见问题_动力节点Java学院整理

    2023-08-23 01:30:11
  • C/C++ Qt TreeWidget 单层树形组件应用小结

    2022-05-06 16:17:13
  • android 简单图片动画播放的实例代码

    2023-11-07 12:39:01
  • Java 实现判定顺序表中是否包含某个元素(思路详解)

    2023-09-11 01:03:04
  • java注解的类型知识点总结

    2022-11-04 00:26:02
  • MultipartFile中transferTo(File file)的路径问题及解决

    2023-11-12 00:07:08
  • Java遍历Map对象的四种方式

    2022-05-07 14:30:04
  • Java9中对集合类扩展的of方法解析

    2022-06-10 09:49:43
  • Springboot公共字段填充及ThreadLocal模块改进方案

    2023-11-17 22:58:39
  • java如何判断一个对象是否为空对象

    2023-12-11 06:53:59
  • Java文件操作实例详解

    2023-11-25 10:29:40
  • Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式

    2022-12-14 18:23:58
  • Android自定义控件之刻度尺控件

    2022-05-14 07:37:13
  • C#将html table 导出成excel实例

    2023-12-20 04:58:55
  • C#编程获取客户端计算机硬件及系统信息功能示例

    2023-08-09 01:57:15
  • spring boot thymeleaf 图片上传web项目根目录操作步骤

    2023-11-23 10:50:46
  • 解决RedisTemplate调用increment报错问题

    2023-11-20 06:35:05
  • WinForm项目开发中NPOI用法实例解析

    2021-09-17 16:53:57
  • Android可自定义神奇动效的卡片切换视图实例

    2022-11-24 09:07:46
  • Oracle + Mybatis实现批量插入、更新和删除示例代码

    2022-01-18 16:05:58
  • asp之家 软件编程 m.aspxhome.com