我遇到多线程问题。 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);
}
答案 0 :(得分:2)
考虑表达式
new ThreadStart( sendCom(IP, com) );
它说要调用sendCom
并将结果传递给ThreadStart
构造函数。这不是你想要的 - 你希望ThreadStart引用sendCom
函数,并让新线程在IP
和com
中传递。
这种做法的典型方式就像Hans Passant所说:
var t = new Thread(new ThreadStart(() => sendCom(IP, com)));
t.Start();
在这里,您构建一个匿名函数,在调用时,将调用sendCom
。然后将其传递给新线程。新线程将调用它。