dataTable 执行select 时提示 集合已修改;枚举操作可能无法执行

zywhao 2010-05-30 03:23:05
一个datatable 中存放着3万多记录

现在有10个线程不停的从串口收到数据,并提交给 datatable来实现更新或添加


偶尔就在执行 ds.table[0].select("userID='"+xxxx+"'")


时就会出现 集合已修改;枚举操作可能无法执行 的错误


如何解决
...全文
448 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
随智阔 2012-01-17
  • 打赏
  • 举报
回复
http://www.cnblogs.com/adandelion/archive/2008/01/05/1027212.html集合已修改;枚举操作可能无法执行。使用foreach 循环删除DataRow的时候的问题! 该死的AcceptChanges() Row.elete() Remove(Row)使用不同。
zywhao 2010-07-09
  • 打赏
  • 举报
回复
是的, 必须要用lock
测试通过,发分~~
YeahBingo 2010-05-30
  • 打赏
  • 举报
回复
在多线程执行时,对于可变对象的读写操作最后都要加上读写锁,就像操作系统中的PV操作一样
CGabriel 2010-05-30
  • 打赏
  • 举报
回复
在多线程环境中, 更新,添加, select 的时候都需要用 lock 把 datatable 锁定
wuyq11 2010-05-30
  • 打赏
  • 举报
回复
执行foreach循环的时候,不能改变正在迭代的对象
改用for循环

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧