无法使用方法调用创建新线程

时间:2013-04-04 23:56:10

标签: c# multithreading

我遇到多线程问题。 VS2010不接受“sendCom(IP,com)”。错误:已过时的方法名称

    private void sendCom(String com)
    {

        //send command 
        int i=0;
        String IP;
        foreach (var item in checkedListBox1.CheckedItems)
        {
            Console.WriteLine(item.ToString());
            IP = getIP(item);                
            theThreads[i] = new Thread(new ThreadStart( sendCom(IP, com) ));
            i++;
        }
    }

    private void sendCom(String IP, String com)
    {
        theSSHclass.RunSingleCom(IP, com);
    }

1 个答案:

答案 0 :(得分:2)

考虑表达式

new ThreadStart( sendCom(IP, com) );

它说要调用sendCom并将结果传递给ThreadStart构造函数。这不是你想要的 - 你希望ThreadStart引用sendCom函数,并让新线程在IPcom中传递。

这种做法的典型方式就像Hans Passant所说:

var t = new Thread(new ThreadStart(() => sendCom(IP, com)));
t.Start();

在这里,您构建一个匿名函数,在调用时,将调用sendCom。然后将其传递给新线程。新线程将调用它。