• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

使用多线程时,怎样指定一个带参数的方法作为ThreadStart()的参数?

xueyhfeng 2005-07-25 10:25:33
如题,如果我使用 Thread thd1 = new Thread(new ThreadStart(Query));来创建线程,那么当这个Query方法带有参数时,会编译失败,说是委托(delegate)与Query不符,该怎么办?
...全文
624 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xueyhfeng 2005-07-25
恩,楼上的方法可行,不过,似乎需要在QueryA()中做额外的判断,我现在用ThreadPool解决了问题,感谢两位,
回复
fxyfx 2005-07-25
Main()中
Query q1=new Query("ad","dd","dd"...);
Query q2=new Query("cc","cc","cc"...);
Query q3=new Query("ee","ee","ee"...);
Query q4=new Query("11","22","33"...);
类Query中
QueayA()
{
//例如执行操作aa
aa(str1,str2,str3.......);
//例如执行操作bb
bb(str10,str20,str30...);
...............
}
回复
xueyhfeng 2005-07-25
楼上的方法刚才试了,
因为我要同时启动多个线程来执行操作,而且这些线程需要不同的参数,如果用楼上的方法,那么存在线程同步的问题,似乎是主线程先执行,然后所有创建出来的线程都得到了相同的数据,
回复
fxyfx 2005-07-25
class Query
{
private string str1;
……参数
public Query(string a,string b,string c......)
{
str1=a;
...........
}
public void QueryA
{
.....................
}
}
void Main()
{
Query q1=new Query("ad","dd","dd"...);
...
Thread th1=new Thread(new ThreadStart(Query.QueryA);
...........
}
回复
firstsee 2005-07-25
如果你的线程在创建的同时就会启动并执行的话,建议使用
ThreadPool.QueueUserWorkItem(new WaitCallback(Query),state);
这样你就可以把所有的参数放在state中了。
回复
lm517 2005-07-25
mark
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2005-07-25 10:25
社区公告

让您成为最强悍的C#开发者