在此示例中,我无法将值传递给用于运行多个线程的方法。
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
的值传递给线程正在调用的方法,我该怎么办?
答案 0 :(得分: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();
}
答案 1 :(得分:0)
我通常做的是将包含我的参数的结构发送到线程。