通过Adapter.Fill()修改数据表中的数据

时间:2018-10-30 10:19:16

标签: c# datatable sqldataadapter system.data

我有两个线程,一个正在使用SqlDataAdapter从SQL Server查询中提取结果集,另一个正在同时处理数据(不必删除)和数据集。

代码:

//Thread 1
DataSet ds = new DataSet();
using (SqlDataAdapter sd = new SqlDataAdapter(cmd, sourceConn))
{
    sd.Fill(ds);
}

//Thread 2 -- Execute after Fill() starts
//I might be deleting or modifying  some rows(use Delete() not RemoveAt()), but also might be just reading ds
ds.Tables[0].AcceptChanges(); 

执行结果有时显示ArgumentException表示执行AcceptChanges()时索引超出范围,或IndexOutOfRangeExceptionds.Tables[0].Rows[i].Delete()运行时或仅读取一些ith行时(当然,我限制了i<= ds.Tables[0].Rows.Count - 1)。例外行计数发生在某个随机数上,但可能接近总行计数的80%以上(例如总计150k,发生在132k)。那么如果我没有执行任何删除过程,这里的窍门是什么?

0 个答案:

没有答案