读书人

多线程传递参数的有关问题

发布时间: 2013-02-25 10:23:36 作者: rapoo

多线程传递参数的问题
请教一下,这个写的有问题吗,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里取,所以也不会对,会乱套

读书人网 >C#

热点推荐