Control 'XXXX' accessed from a thread other than the thread it was created on
在FORM初始化的时候加入
Control.CheckForIllegalCrossThreadCalls = false;
另一种方法
delegate void DataGridView_Delegate(IEnumerable<CaseInfo> list);
/// <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
如果是在异步中,报此错误,使用第二种方式可解决