最近改别人的代码调试时报这个错,调试了蛮久没发现什么问题,百度了下也没发现相应的解决方案。
Thread th = new Thread(new ThreadStart(() =>
{
table.Rows.Clear();
checkSaveData();
BindDataGrid(table);
}));
th.IsBackground = true;
th.Start();
后来经过别人解释才想到大概是什么原因。报错提示的大致意思就是在线程里面操作窗体的控件,当时没发现什么代码在什么地方调用了窗体的控件,
问题是table.Rows.Clear();这行代码,由于窗体中取数时把gridControl的绑定数据源设为table,所以当在线程里把table的所有行Clear掉时,触发了
gridControl的数据变化的事件,等于间接操作了gridControl,所以就报了这个错误,只要把这行代码写到线程的上一行就行了,效果也一样。
时间: 2024-11-06 03:29:24