winForm,C#跨线程,委托处理方案

首次发布:2017-07-07 13:52

在开线程时如果有跨线程执行事件时会报错 解决方法有以下三种

方案1

 this.BeginInvoke((EventHandler)(delegate { dataGridView1.DataSource = dt; }));// dataGridView1.DataSource = dt这是要跨线程事件

方案2

Control.CheckForIllegalCrossThreadCalls = false;//在初始化构造方法里面加这个,取消所有跨线程限制

方案3

public delegate void OutDelegate(string path);
private void DataFill(string path)
{
  if (this.InvokeRequired)
     {
        OutDelegate outDalegate = new OutDelegate(DataFill);
        this.Invoke(outDalegate, new object[] { path });
     }
     else
     {
        dataGridView1.DataSource = dt;// dataGridView1.DataSource = dt这是要跨线程事件
     }
}