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

 更新时间:2016年07月27日 11:02:42   投稿:mrr  
这篇文章主要介绍了C#向线程中传递多个参数的解决方法(两种)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

问题:

对于多线程编程,很多时候往往需要向线程中传递多个参数,而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#向线程中传递多个参数的解决方法(两种) ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 解析美国东部时间与北京时间相互转换的实现代码

    解析美国东部时间与北京时间相互转换的实现代码

    本篇文章是对美国东部时间与北京时间相互转换的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c# 快速排序算法

    c# 快速排序算法

    快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)
    2013-10-10
  • C#实现漂亮的数字时钟效果

    C#实现漂亮的数字时钟效果

    这篇文章主要介绍了C#实现漂亮的数字时钟效果,涉及时间函数的应用及绘图的方法,需要的朋友可以参考下
    2014-10-10
  • 判断图片-判断位图是否是黑白图片的方法

    判断图片-判断位图是否是黑白图片的方法

    近来工作需要判断图片否是是彩色的,由于是十万张以上的大批量理处,所以通过序程来动自判断。
    2013-05-05
  • 验证码的三个常见漏洞和修复方法

    验证码的三个常见漏洞和修复方法

    这篇文章主要介绍了验证码的三个常见漏洞和修复方法,本文讲解了把验证码存储在Cookie中、没有进行非空判断、没有及时销毁验证码三个常见问题和解决方法,需要的朋友可以参考下
    2015-03-03
  • C#实现多线程的几种方式常用场景分析

    C#实现多线程的几种方式常用场景分析

    多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制,多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率,这篇文章主要介绍了C#实现多线程的几种方式,需要的朋友可以参考下
    2024-05-05
  • C#中隐式运行CMD命令行窗口的方法

    C#中隐式运行CMD命令行窗口的方法

    下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法。
    2011-04-04
  • C#任务并行Parellel.For和Parallel.ForEach

    C#任务并行Parellel.For和Parallel.ForEach

    这篇文章介绍了C#任务并行Parellel.For和Parallel.ForEach的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 详解C#如何使用WASM跨语言调用

    详解C#如何使用WASM跨语言调用

    WebAssembly(简称Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式,这篇文章主要介绍了C#如何使用WASM跨语言调用,需要的小伙伴可以了解一下
    2023-08-08
  • C#多线程之Thread中Thread.IsAlive属性用法分析

    C#多线程之Thread中Thread.IsAlive属性用法分析

    这篇文章主要介绍了C#多线程之Thread中Thread.IsAlive属性用法,实例分析了C#判断线程可用状态的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论