• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#向线程中传递多个参数的解决方法(两种)

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#创建多个线程,c#跨线程访问控件,c#关闭线程,c#创建线程,c#多线程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

问题:

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

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

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

void method(int begin,int end)
{
..................
}
</div>

解决办法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)
{
...............
}
}
</div>

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

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

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

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

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

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

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

int para[]=new int[2]{100,10000};
</div>

最后新建线程进行调用

THread t = new Thread(new ParameterizedThreadStart(method))
t.start(para);
</div>

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

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

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-28C#反射在实际应用中的实例代码
  • 2017-05-28C# 无需COM组件创建快捷方式的实现代码
  • 2017-05-28C# 实现的图片盖章功能,支持拖拽、旋转、放缩、保存
  • 2017-05-28C#利用QrCode.Net生成二维码(Qr码)的方法
  • 2017-05-28C# 创建文本文件写入读取实现代码
  • 2017-05-28C# 如何判断两个文件内容是否相同的方法
  • 2017-05-28使用xmltextreader对象读取xml文档示例
  • 2017-05-28基于运算符重载的那些事
  • 2017-05-28C#中的多线程多参数传递详解
  • 2017-05-28C#中的不可变数据类型介绍(不可变对象、不可变集合)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#基于数据库存储过程的AJAX分页实例
    • C# MVC 微信支付教程系列之公众号支付代码
    • C#反色处理及其效率问题分析
    • c#中的泛型委托详解
    • c#基础学习之多态
    • C#网页跳转方法总结
    • C#利用Openxml读取Excel数据实例
    • C#数组中List, Dictionary的相互转换问题
    • 使用VS2010 C#开发ActiveX控件(上)
    • WPF实现图片合成或加水印的方法【2种方法】

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有