当前位置:首页 > Windows程序 > 正文

C# Cross thread operation detected.

2021-03-28 Windows程序

最近改别人的代码调试时报这个错,调试了蛮久没发现什么问题,百度了下也没发现相应的解决方案。

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,所以就报了这个错误,只要把这行代码写到线程的上一行就行了,效果也一样。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69092.html