Code Bye

c#线程池如何传递多个参数

 

线程池貌似只能传递一个参数,还必须是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)   //执行的任务
{
    for(int i=1;i<5;i++)
    {
        Console.Write(x+”:”+i+”\n”);
    }
}


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#线程池如何传递多个参数