C#中的多线程问题,为什么带参数的方法不行,不带参数的可以? 5

Threadt1=newThread(newThreadStart(Show('hello')));t1.Start();privatevoidShow(stringst... Thread t1 = new Thread(new ThreadStart(Show('hello')));

t1.Start();

private void Show(string str)
{
MessageBox.Show(str);
}

为什么这样不行,它说一定要用什么 方法 哦,是不是不能含有参数的函数啊?

好像下面就行哦:
Thread t1 = new Thread(new ThreadStart(Show()));
t1.Start();
private void Show()
{
MessageBox.Show(‘hello');

}
展开
 我来答
潘达lya
2013-01-24 · TA获得超过1475个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:440万
展开全部
threadstart的参数是一个函数指针,这个指针是要传递个thread的一个内部函数执行的(那个函数才是真正意义的线程),你自己的函数只是传递给人家,人家调用进去,该函数指针的类型就是没有参数,没有返回值的,你的线程函数必须类型相同,指针类型不同肯定不行的。。。。
annaro
2013-01-24
知道答主
回答量:17
采纳率:0%
帮助的人:8.2万
展开全部
c# 给线程传参数有很多方法,这里举个例子

比如传一个string 到线程里

Thread th=new Thread(the_work)
th.Start("要传进线程的串");

public void the_work(object o)
{
string s=(string)o;

//你线程里的工作
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d2963d0
2013-01-24 · TA获得超过2780个赞
知道小有建树答主
回答量:668
采纳率:100%
帮助的人:624万
展开全部
楼主,你要是想带参数可以用这个
ParameterizedThreadStart pts = new ParameterizedThreadStart(ReceiveDate);
Thread threadReceive = new Thread(pts);
User user = new User(newClient);
threadReceive.Start(user);

看第一行,我这段代码的ReceiveDate方法就是有一个参数的,使用ParameterizedThreadStart这个创建线程可以带一个参数
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式