天天看点

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

 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();

 }