C#多线程给控件赋值 抛异常

来源:互联网 发布:不亦说乎 编辑:程序博客网 时间:2024/06/05 06:19

 Control.CheckForIllegalCrossThreadCalls = false;不检查控件的赋值是否是跨线程的.

但对DataGridView控件时,会出现没有滚动条的情况。

建议用定义一个委托。

例子[伪代码]:

 private delegate void SetControlValue(DataTable dt);

 private void Run()

{

     if (InvokeRequired)
     {
           this.Invoke(new SetControlValue(SetControl), tmpDT);
     }

}

 

 //跟SetProgressBarValue委托相匹配的方法  
  private void SetControl(DataTable dt)
  {
        this.dgvDBNameVersion.DataSource = dt;
        label1.Text = dt.Rows.Count.ToString();
 }