2013-04-04 36 views
0

我有一个多线程问题。 VS2010不接受“sendCom(IP,com)”。错误:expacted方法名无法使用方法调用创建新线程

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

'ThreadStart'包装一个方法来执行,执行的不是* result *。 – 2013-04-04 23:57:25

+0

你可以发布一个exsample如何使它正确吗? – tux007 2013-04-05 00:00:06

+2

使用'new Thread(new ThreadStart(()=> sendCom(IP,com)));' – 2013-04-05 00:07:39

回答

2

考虑表达

new ThreadStart(sendCom(IP, com)); 

它说叫sendCom,并将结果传递到ThreadStart构造。这不是你想要的 - 你想让ThreadStart引用sendCom函数,并让新线程通过IPcom

做到这一点的典型方法是像汉斯帕桑特说:

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

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

+0

谢谢,ist工作正常,但线程必须以thethread.Start()开始。 – tux007 2013-04-08 10:11:49

相关问题