不知道这个问对不对哦 第一次提问方法  
public void get_all(string s_host)

}按钮
 private void button2_Click(object sender, EventArgs e)
        {
           // Thread thread = new ThreadStart(get_all(string s_host))
           // Thread thread = new ThreadStart(get_all())
            thread.IsBackground = true;
            thread.Start(5);             get_all(str);
       }大意就是这样 get_all 这个方法想多线程 传递str进去。
在线等

解决方案 »

  1.   

    public void get_all(string s_host)
    改为:public void get_all(object host)
    {
        string strHost = (string)host; 
        // ...
    }Thread thread = new ThreadStart(get_all);
    thread.Start(5);
      

  2.   

    用1楼的办法 
    错误 1 “get_all”的重载均与委托“System.Threading.ThreadStart”不匹配换了ParameterizedThreadStart 好像是单个传递参数什么的哦 语句是通过了 ,
    Thread th = new Thread(new ParameterizedThreadStart(get_all));不过后面还有各种错误,原来可以顺利执行的程序 虽然卡UI,传递值为空 等错误,我在好好理解下,感谢1楼深夜解答了
      

  3.   


    就是逐个调用 Myfuntion1,2,...一般线程函数的声明和启动Thread t = new Thread(new ThreadStart(MyFunction));
    t.Start();
    正是调用了没有参数和返回值的 委托函数 ThreadStart
    其中的参数MyFunction 是 这个委托函数中的一员.很明显 这样无法传参数和返回值,那我们该怎么办?答案就在委托 的BeginInvoke() 方法上, BeginInvoke() 也是(异步)启动一个新线程.
    例如
    MyDelegate dele = new MyDelegate (MyFunction);
    dele.BeginInvoke(10,"abcd");
    void MyFunction(int count, string str);
    可以实现参数的传递. 如何收集线程函数 的 返回值?
    与 BeginInvoke 对应 有个 EndInvoke 方法,而且运行完毕返回 IAsyncResult 类型的返回值.
    这样我们可以这样收集 线程函数的 返回值MyDelegate dele = new MyDelegate (MyFunction);
    IAsyncResult ref = dele.BeginInvoke(10,"abcd");
    ....
    int result = dele.EndInvoke(ref); <----收集 返回值
    int MyFunction(int count, string str); <----带参数和返回值的 线程函数