Control 'XXXX' accessed from a thread other than the thread it was created on

Control 'XXXX' accessed from a thread other than the thread it was created on

在FORM初始化的时候加入

1
Control.CheckForIllegalCrossThreadCalls = false;

另一种方法

1
delegate void DataGridView_Delegate(IEnumerable<CaseInfo> list);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/// <summary>
/// 向DataGridView绑定数据
/// </summary>
private void DataGridView_DataBind(IEnumerable<CaseInfo> list)
{
   if (dgCaseInfo.InvokeRequired)
    {
      DataGridView_Delegate del = new DataGridView_Delegate(DataGridView_DataBind);
       dgCaseInfo.Invoke(del,list);
       return;
    }
 
      if (list == null)
      {
        dgCaseInfo.DataSource = null;
         return;
    }
 
            
 
           dgCaseInfo.DataSource =
               new BindingList<ShowCaseInfo>(
                   list.Select(to => new ShowCaseInfo
                   {
                       Age = to.Age,
                       PatientName = to.PatientName,
                       CardId = to.CardId
                   }).ToList());
 
           dgCaseInfo.Columns[0].HeaderText = Resources.MainForm_DataGridView_DataBind_PatientName;
           dgCaseInfo.Columns[0].Width = 70;
           dgCaseInfo.Columns[1].HeaderText = Resources.MainForm_DataGridView_DataBind_Age;
           dgCaseInfo.Columns[2].Visible = false;
 
           tssl.Text = Resources.MainForm_BackgroundWorker_DoWork_Present_Complete;
       }

  

ERROR:Object reference not set to an instance of an object

如果是在异步中,报此错误,使用第二种方式可解决



posted @   骨头  阅读(1200)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示