线程池貌似只能传递一个参数,还必须是object类型的 for(int i=1;i<20;i++) //将任务加到线程当中 { ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), i); } public static void TaskProc1(object x) //执行的任务 { for(int i=1;i<5;i++) { Console.Write(x+":"+i+"\n"); } } |
|
没办法,多线程只能传一个参数,
其它的参数,用全局变量来代替吧, |
|
10分 |
把多个参数封装成一个对象
|
10分 |
自定义一个class类想放什么放什么啊
用静态全局变量也可以 |
50分 |
public class Person { public int Id { get; set; } public string Name { get; set; } public int Count { get; set; } } for (int i = 1; i < 20; i++) //将任务加到线程当中 { ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), new Person { Id = 1, Name = "测试" ,Count=i}); } public static void TaskProc1(object x) //执行的任务 { Person person = x as Person; } |
10分 |
用lambda或者委托应该可以传多个
|
10分 |
一个对象可以是任何东西,包括集合,元组,或者你封装好的类型的实例,思维别那么局限啊。
|
ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), i);
你的i 是一个对象。。就可以了。 |
|
10分 |
new Thread(delegate() { this.Invoke(new Action(delegate() { 乾坤大挪移(快捷菜单, 乾坤大挪移参数); })); }).Start();
http://blog.csdn.net/xianfajushi/article/details/7609849实在是简单的事,提问的这么多! |
for(int i=1;i<20;i++) //将任务加到线程当中
{ ThreadPool.QueueUserWorkItem(o=>TaskProc1(i,i)); } public static void TaskProc1(object x,object y) //执行的任务 |