0

我有一个多线程问题。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);
    }
4

1 回答 1

2

考虑表达式

new ThreadStart( sendCom(IP, com) );

它说调用sendCom并将结果传递给ThreadStart构造函数。这不是您想要的 - 您希望 ThreadStart 引用该sendCom函数,并让新线程传入IPand com

执行此操作的典型方法就像 Hans Passant 所说:

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

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

于 2013-04-05T00:25:35.070 回答