不能使用方法调用创建新线程
本文关键字:线程 新线程 使用方法 调用 创建 不能 | 更新日期: 2023-09-27 18:07:23
我有一个多线程的问题。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);
}
考虑表达式
new ThreadStart( sendCom(IP, com) );
它说调用sendCom
并将结果传递给ThreadStart
构造函数。这不是你想要的-你想要ThreadStart有一个对sendCom
函数的引用,并让新线程在IP
和com
中传递。
典型的做法就像汉斯·帕桑特说的:
var t = new Thread(new ThreadStart(() => sendCom(IP, com)));
t.Start();
这里你正在构造一个匿名函数,当调用时,将调用sendCom
。然后将其传递给新线程。新线程将调用它