任何使ConcurrentDictionary线程安全的想法,其中值被导出到列表ex,并在该字典被清除之后.这样任何其他线程都无法在导出和清除之间添加数据.
像这样:
“
List<data> list; list = (List<data>)_changedItems.Values; //get values before clearing _changedItems.Clear();
“
并且使用函数_changedItems.AddOrUpdate通过其他线程完成添加
现在,如果某个线程在清除行之前将数据对象添加到集合中,则有可能在从字典中获取数据和清除内容之间丢失新数据.
lock(object) { List<data> list; list = (List<data>)_changedItems.Values; _changedItems.Clear(); }
和
lock(object) _changedItems.AddOrUpdate
需要一个Clear-function,可以安全地从字典中返回所有已清除的项目.
-Larry
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。