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 に答える