下面的伪代码是程序的大概,错误原因是因为线程b修改数据源时正巧碰到用户操作控件引发的,系统实际有多个线程操作这个datagridview和数据源。
线程a
{
DataViewdv = new DataView(db);
dv.RowFilter = "delete = false"
this.datagridview.DataSource= dv;
}
线程b(5秒执行一次)
{
foreach(var r in db.rows)
{
if(r["tm"] < DateTime.Now) r["delete"] = true;
}
}
当我正在操作datagridview的时候,比如对这个datagridview进行双击、拖动滚动条、编辑单元格文本,这时正好遇到了线程b执行,突然datagridview数据源有所减少或者全部消失,这时崩溃,错误定位到Main()方法中,错误提示是“在 System.NullReferenceException 中第一次偶然出现的“System.Windows.Forms.dll”类型的异常”,用try也不能捕获异常,跟找不到确切的文字。请问如何解决多线程操作datagridview会出现系统崩溃的问题?