C# ConcurrentDictionary多线程遍历问题

2020-05-27 09:40发布

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

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

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

4条回答
贪生不怕死
2楼-- · 2020-05-27 09:49

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

查看更多
做个烂人
3楼-- · 2020-05-27 09:51

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

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

查看更多
太酷不给撩
4楼-- · 2020-05-27 09:58

建议写个demo发来

查看更多
The star\"
5楼-- · 2020-05-27 10:00

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

查看更多
登录 后发表回答