C# ConcurrentDictionary多线程遍历问题

2020-05-27 09:23发布

问题:

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

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

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

回答1:

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

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



回答2:

建议写个demo发来



回答3:

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



回答4:

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