0

在此示例中,我无法将值传递给用于运行多个线程的方法。

private void btnStartSingleHost_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 500; i++)
        new System.Threading.Thread(establishConnection).Start();
}

private void establishConnection()
{
    new SinglePortScan(tbHostIP.Text, int.Parse(nupdHostPort.Value.ToString()), int.Parse(nupdHostTimeout.Value.ToString()), ref tbSingleResults).connect();
}

例如,如果我想将i循环的值传递给线程正在调用的方法,我该怎么办?

4

2 回答 2

3

使用ParametrizedThreadStart委托而不是ThreadStart委托。

private void btnStartSingleHost_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 500; i++)
        new System.Threading.Thread(establishConnection).Start(i);
}

private void establishConnection(object state)
{
    int i = (int)state;
    // do whatever you want with i here
    new SinglePortScan(tbHostIP.Text, int.Parse(nupdHostPort.Value.ToString()), int.Parse(nupdHostTimeout.Value.ToString()), ref tbSingleResults).connect();
}
于 2013-05-17T00:54:01.230 回答
0

我通常做的是将包含我的参数的结构发送到线程。

于 2013-05-17T00:52:17.423 回答