不能使用方法调用创建新线程

本文关键字:线程 新线程 使用方法 调用 创建 不能 | 更新日期: 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函数的引用,并让新线程在IPcom中传递。

典型的做法就像汉斯·帕桑特说的:

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

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