日期:2014-05-17  浏览次数:20922 次

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