http://support.microsoft.com/kb/815804/zh-cn
这是微软帮助中的一段
this.progressBar1.Value = newval;实际调测时报错,请问是什么原因?

解决方案 »

  1.   

    跨线程访问主线程中实例化的控件,需要开启安全访问,Control.Invoke,Control.BeginInvoke(委托...
      

  2.   

    尽量不要开启安全访问可以用委托和方法进行操作 
    比如:public class myForm
    {
        public myForm(){}
        private delegate void SetControlStateDeletage(string a);
        private delegate void SetControlState(string a){btn1.Text=a;}
        
        private btn3_Click(object sender,Eventargs e)
        {
            string btnText=e.Name;
            BackgroundWork work=new BackgroundWork (); //声明后台线程,
            work.DoWork+=delegate          //定义后台线程要做的工作
           {
               SetControlStateDeletage setControlStateDeletage=new SetControlStateDeletage(SetControlState);
               this.Invoke(setControlStateDeletage,btnText);
           };
           work.RunWorkerAsync();   //后台线程启动
        }
    }
      

  3.   

    Action d=delegate()
    {
    this.progressBar1.Value = newval;
    }
    progessBar1.Invode(d);跨线程的话要这么写