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

 

posted @ 2021-05-08 14:21  ZedFFF  阅读(290)  评论(0编辑  收藏  举报