LineStatusTable表结构中定义了一个主键为AutoIndex的自动递增列。
公共模块定义
public static DataSet DmsDataSet = new DataSet();
界面线程
周期性执行(100-200ms)
dtTemp = Variable.DmsDataSet.Tables["LineStatusTable"]; //主表
dtMain = dtTemp.Copy();
后台线程
有更新 Variable.DmsDataSet.Tables["LineStatusTable"]表的内容; 但运行一段时间(一般几个小时左右)就会出现dtMain 中有一行报错异常,只剩下主键列的信息,这行其他列信息都为空了。而查看dtTemp表则是正确的,不知究竟是怎么回事,有高手能解释一下吗。
公共模块定义
public static DataSet DmsDataSet = new DataSet();
界面线程
周期性执行(100-200ms)
dtTemp = Variable.DmsDataSet.Tables["LineStatusTable"]; //主表
dtMain = dtTemp.Copy();
后台线程
有更新 Variable.DmsDataSet.Tables["LineStatusTable"]表的内容; 但运行一段时间(一般几个小时左右)就会出现dtMain 中有一行报错异常,只剩下主键列的信息,这行其他列信息都为空了。而查看dtTemp表则是正确的,不知究竟是怎么回事,有高手能解释一下吗。
DataTable 内部索引已损坏:“13”
DataTable 内部索引已损坏:“5”
你确定在你的后台线程中处理这个Datatable的过程中 其他的线程不会对这个Datatable进行操作么(这里操作是指更新或者新插入记录)
个人还是感觉多线程的时候出现问题一般是为对可能出现的并发处理没有进行控制造成的