new ThreadStart中的方法如果有参数,该怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new ThreadStart中的方法如果有参数,该怎么写相关的知识,希望对你有一定的参考价值。

楼主,你要是想带参数可以用这个
ParameterizedThreadStart pts = new ParameterizedThreadStart(ReceiveDate);
Thread threadReceive = new Thread(pts);
User user = new User(newClient);
threadReceive.Start(user);

看第一行,我这段代码的ReceiveDate方法就是有一个参数的,使用ParameterizedThreadStart这个创建线程可以带一个参数
参考技术A Thread calcThread = new Thread(new ParameterizedThreadStart(RunAlg));
calcThread.Start("参数");
做个简单的解释,因为我看之前的答案,都不知道传递的参数是哪个
函数参数类型必须定义为object :
如:RunAlg(object nParam);
参数用的时候需要类型转换,如转int: (int)nParam; 转string :nParam.toString();
多个参数可以做成类或者数组传入。本回答被提问者采纳

c# 中new ThreadStart()怎么用?这里面怎么传参数?

我查了下好像new ThreadStart()的括号内只能穿方法名啊,要是方法有参数怎么办呢?
比如:

private void a()
int x = 0;
int y = 201;
int w = 348;
int h = 175;
Thread t = new Thread(new ThreadStart(b(x,y,w,h)));
t.Start();

public void b(int x,int y,int w,int h)
while(true)
//x,y,w,h----》do something....
Thread.Sleep(100);

Thread的参数委托,有2种,一种是无参的,另一种是一个object参数的,如:
new Thread(b).Start(new int[]x,y,w,h);

void b(object args)
int[] arr = (int[])args;
int x=arr[0];
int y= arr[1];

参考技术A Thread calcThread = new Thread(new ParameterizedThreadStart(RunAlg));
calcThread.Start("参数");
函数参数类型必须定义为object :
如:RunAlg(object nParam);
多个参数可以做成类或者数组传入。

以上是关于new ThreadStart中的方法如果有参数,该怎么写的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 Thread 中的 ThreadStart 方法?

new Thread(new ThreadStart(this.StartServer))

C# 多线程,ThreadStart()里面的方法带了参数就提示错误?

ThreadStart和ParameterizedThreadStart区别

线程学习

如何向线程传递参数