多线程传递参数的问题
请教一下,这个写的有问题吗,viewServer方法传递的参数是否会出现几条线程传递相同的参数
for (int rowIndex = 0; rowIndex < this.dataGridView1.SelectedRows.Count; rowIndex++)
{
bool isSuccesful=false;
threads[rowIndex] = new Thread(delegate()
{
isSuccesful = this.viewServer(this.dataGridView1.SelectedRows[rowIndex].Cells[1].Value.ToString(), dt_begin, dt_end);
}
);
threads[rowIndex].Start();
}
private bool viewServer(string str_selectedIp, DateTime dt_begin, DateTime dt_end)
{
lock (lockReadWrite)
{
SysLogView co = new SysLogView();
string serverip = str_
selectedIp;
bool isSuccesful = co.LoadEventLog(serverip, dt_begin, dt_end);
int value = progressBar.Value;
if(value < progressBar.Maximum)
{
value += 1;
//Thread.Sleep(2000);
SetProcessBarValue(value);
SetLabelValue(value+1);
}
return isSuccesful;
}
}
多线程
参数?
------解决方案--------------------应该没问题,用局部变量,别用全局变量
------解决方案--------------------不过 SetProcessBarValue,这个可能会让进度条乱套
------解决方案--------------------progressBar相当于是全局的,所以在线程里不能公用
后面的 value你从progressBar里取,所以也不会对,会乱套