线程传参数方法

给线程传送数据

如果需要给线程传送一些数据,可以采用两种方式。一种方式是使用带ParameterizedThreadStart委托参数的Thread构造函数,另一种方式是创建一个定制类,把线程的方法定义为实例方法,这样就可以初始化实例的数据,之后启动线程。

 

要给线程传送数据,需要某个存储数据的类或结构。这里定义了包含字符串的结构Data,也可以传送任意对象。

public struct Data

{

public string Message;

}

如果使用了ParameterizedThreadStart委托,线程的入口点必须有一个object类型的参数,返回类型为void。对象可以转换为数据,这里是把信息写入控制台。

static void ThreadMainWithParameters(object o)

{

Data d = (Data)o;

Console.WriteLine("Running in a thread, received {0}", d.Message);

}

Thread类的构造函数中,可以将新的入口点赋予ThreadMainWithParameters,传送变量d,调用Start()方法。

static void Main()

{

Data d = new Data();

d.Message = "Info";

Thread t2 = new Thread(ThreadMainWithParameters);

t2.Start(d);

}

给新线程传送数据的另一种方式是定义一个类(参见类MyThread),在其中定义需要的字段,将线程的主方法定义为类的一个实例方法:

public class MyThread

{

private string data;

public MyThread(string data)

{

this.data = data;

}

public void ThreadMain()

{

Console.WriteLine("Running in a thread, data: {0}", data);

}

}

这样,就可以创建MyThread的一个对象,给Thread类的构造函数传送对象和Thread Main()方法。线程可以访问数据。

MyThread obj = new MyThread("info");

Thread t3 = new Thread(obj.ThreadMain);

t3.Start();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值