DataSet/ DataTable和任何连接的对象都不是线程安全的。请确保您锁定所有合适的对象。
1.因为我在多线程中都有操作DataTable,然后我在所有操作DataTable的地方都加入了Lock语句,然后问题解决了!
感谢此文作者 GR_king,原文网址:http://blog.51cto.com/gleolee/1911134
1 2 3 4 |
|
2.我的问题属于此类,把datatable中的内容复制一份(深拷贝),然后操作新复制出来的datatable即可修复此问题。具体操作如下:
for (int i = 0; i < listStartingSites.Count; i++)
{
DataTable dt = dataTable.Copy();
lock (dt.Rows.SyncRoot)
{
//获取指定Site的所有测试数据
DataRow[] dataRowsTest