首页 新闻 赞助 找找看

C# ConcurrentDictionary多线程遍历问题

0
[已解决问题] 解决于 2020-05-27 10:05

一个线程向ConcurrentDictionary中添加、更新、删除数据,另一个则从中读取数据。
但是在线程读取时,总会报错。

在输出框中的
引发的异常:“System.ArguementNullException”(位于mscorlib.dll中),值不能为null

按道理在foreach中,不会出现值不为null的异常

< >
分享
最佳答案
0

加个判断当那个值为null时进断点,看下当前diconary的数据是否正确,

你这个错误很有可能是数据问题导致的,和多线程操作ConcurrentDictionary应该没有多大关系。

奖励园豆:5
~扎克伯格 | 小虾三级 |园豆:1923 | 2020-05-20 16:56

用那个特别好用的 toArray(),然后就得出了,是数据的问题。淦!上游给数据中某些项有问题

echo_lovely | 园豆:1422 (小虾三级) | 2020-05-20 16:58
其他回答(3)
0

建议写个demo发来

会长 | 园豆:12401 (专家六级) | 2020-05-20 15:15

这是个大项目,我抽不出来这相关的demo

支持(0) 反对(0) echo_lovely | 园豆:1422 (小虾三级) | 2020-05-20 15:17
0

ConcurrentDictionary这个鬼东西有个ToArray()的方法,返回值为键值对的形式,在这返回值里面会保存ConcurrentDictionary这个鬼东西那个时刻的快照,然后发现里面的数据有问题,淦

echo_lovely | 园豆:1422 (小虾三级) | 2020-05-20 17:01
0

读的时候,用TryGetValue方法,添加或更新用AddOrUpdate方法

戒焦戒躁 | 园豆:15 (初学一级) | 2020-05-24 12:40

知道key那倒好办,问题是key是上游传来不知道是啥的东西,没有规律,只能通过存在里面的对象属性判断

支持(0) 反对(0) echo_lovely | 园豆:1422 (小虾三级) | 2020-05-27 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册