首页 新闻 赞助 找找看

DataTable 里修改和查询并发的问题。

0
悬赏园豆:30 [待解决问题]

有个4个线程,2个修改DataTable里的行,另2个用查询table1.Select(queryFilterExpression, orderBy, DataViewRowState.OriginalRows);,结果会发现返回的DataRow数组里有的索引里的DataRow实例是null,请问,这如何解决呀?原因是什么?在修改的时候我用lock锁定这个DataTable了,所以在修改的时候不能查询。查询的时候是可以并发查询的,但不能修改。

问题补充:

非常纳闷啊,DataRow数组里怎么会有null的项呢,而且有时候一个精确的查询条件能查出几条数据,比如where id = 3这个条件,能把id = 2的行也查出来,前提我没有修改这些主键。十分诡异啊。

clcvc的主页 clcvc | 初学一级 | 园豆:62
提问于:2013-08-26 16:34
< >
分享
所有回答(3)
0

如果你的 lock 没问题的话,请把 DataViewRowState.OriginalRows 去掉。

Launcher | 园豆:45045 (高人七级) | 2013-08-26 16:45

这个Select没有2个参数重载呀。我想要排序的参数,就必须带着第三个参数。而且DataViewRowState.OriginalRows是为了防止读到脏数据才加的。这可咋么办呢

支持(0) 反对(0) clcvc | 园豆:62 (初学一级) | 2013-08-26 17:26

@Launcher: 3Q.....^^

支持(0) 反对(0) clcvc | 园豆:62 (初学一级) | 2013-08-26 17:40
0

比如where id = 3这个条件,能把id = 2的行也查出来,前提我没有修改这些主键。十分诡异啊。

--你说的情况是不可能发生的,肯定是别的原因

田林九村 | 园豆:2367 (老鸟四级) | 2013-08-26 17:07

我也不相信这是真的,的确遇到了。我的世界观都扭曲了。

支持(0) 反对(0) clcvc | 园豆:62 (初学一级) | 2013-08-26 17:27
0

把具体参数带上,贴出代码来看下

幻天芒 | 园豆:37175 (高人七级) | 2013-08-26 18:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册