我正在某个任务中使用一个字典。
逻辑上,我已经设置好了键值不会冲突,但有时候当我往字典中添加内容时,会出现这个异常。
我了解尝试多次删除或添加同一键可能会出现并发问题,但我已经在算法上考虑到了这一点。
是什么导致添加有时会失败? 有什么最好的方法来解决这个问题?
逻辑上,我已经设置好了键值不会冲突,但有时候当我往字典中添加内容时,会出现这个异常。
Index was outside the bounds of the array.
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
at Rpc.<MapIntoRpc>b__4[T](Object x) in Rpc.cs:line 113
at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
我了解尝试多次删除或添加同一键可能会出现并发问题,但我已经在算法上考虑到了这一点。
是什么导致添加有时会失败? 有什么最好的方法来解决这个问题?
ConcurrentDictionary
,而不是尝试自己编写相应的线程安全(无锁?)代码... - Alexei Levenkov