作者:风中的百合香迷人 | 来源:互联网 | 2023-02-01 20:40
我在这种情况下,有一个大字典,由一个线程以相当高的频率随机更新,还有另一个线程试图将字典的快照保存为历史记录.我目前正在使用这样的东西:
Dictionary dict = new Dictionary();
var items = dict.Values.ToList();
这在大多数情况下都可以正常工作,除非它偶尔抛出:
System.InvalidOperationException:集合已被修改; 枚举操作可能无法执行.
我理解为什么会发生这种情况,但我不知道我该怎么做才能避免收集修改错误.
迭代此类集合的最佳方法是什么?
我也试过ConcurrentDictionary,但没有运气.为什么?ConcurrentDictionary线程只在项目级别安全吗?