DataGridView多线程或者Task异步设置DataSource报错
问题描述:前台根据后台的webapi传递过来的数据,然后设置DataSource,第一遍都是没问题的,但是发现只要刷新过快就立即报错;
上代码,位于某个Button的Click事件中:
BomList = await GetListAsync(); m_DVBOMInfo.DataSource = BomList;//这里可能就会报错了
遂网上搜索,看到一篇文章https://blog.csdn.net/cxwl3sxl/article/details/8807763
当时就感觉像是DataSource设置的坑,后面用了上面链接博文的方案,解决了问题。
解决代码,用这个函数替代:m_DVBOMInfo.DataSource = BomList;
private void SetGridViewData(List<BOM> dataList) { this.BeginInvoke(new System.Action(() => { this.m_DVBOMInfo.Rows.Clear(); foreach (BOM data in dataList) { m_DVBOMInfo.Rows.Add(data.EQUIPMENTNAME, data.SUBPROJECTNAME, data.MAJORNAME, data.EQUIPMENTNUM, data.EQUIPMENTCODE, data.SINGLEWEIGHT, data.CUSTOMSPECIFICATIONMODEL); } })); }