C# Dictionary 为引用类型,在多线程的代码中,如果在单线程的意义上存在着Add和Foreach的顺序结构,线程数量越多就越容易出现异常 :Error:System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

我选择的处理方式是使用线程安全的集合ConcurrentDictionary 进行单独处理,添加的粒度需要根据代码结构自己考量,初始化例子如下:

Dictionary<string, string> tempO365ContainerColls =  new Dictionary<string, string> ();

ConcurrentDictionary<string, string> TempO365ContainerColls = new ConcurrentDictionary<string, string>(tempO365ContainerColls , StringComparer.OrdinalIgnoreCase);

MSDN 中文文档链接 https://msdn.microsoft.com/zh-cn/library/dd287191(v=vs.110).aspx

转载于:https://www.cnblogs.com/GS1001/p/9517907.html

关于Dictionary的线程安全问题相关推荐

  1. 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字

    一. 各类数据结构比较及其线程安全问题 1. Array(数组): 分配在连续内存中,不能随意扩展,数组中数值类型必须是一致的.数组的声明有两种形式:直接定义长度,然后赋值:直接赋值. 缺点:插入数据 ...

  2. 关于 智能指针 的线程安全问题

    先说结论,智能指针都是非线程安全的. 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include ...

  3. hash是线程安全的吗?怎么解决?_这次进程、线程、多线程和线程安全问题,一次性帮你全解决了...

    1. 什么是进程 一个软件,在操作系统中运行时,我们称其为进程. 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元. 2. 什么是线程 在一个进程中,每个独立的功能都需要独立的去运行,这 ...

  4. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  5. struts2学习笔记--线程安全问题小结

    在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样 ...

  6. servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变

    Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  7. 线程安全问题产生的原因

    //前提 1:多个线程操作同一个数据 2:操作共享数据的线程代码有多条 当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算 就会导致线程安全问题的产生. 解决思路: 就是将多线程操作共享 ...

  8. java dateformat 线程安全_SimpleDateFormat线程安全问题深入解析

    背景 众所周知,Java中的SimpleDateFormat不是线程安全的,在多线程下会出现意想不到的问题.本文将解析SimpleDateFormat线程不安全的具体原因,从而加深对线程安全的理解. ...

  9. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...

    微信公众号:Zhongger 我是Zhongger,一个在互联网行业摸鱼写代码的打工人! 关注我,了解更多你不知道的[Java后端]打工技巧.职场经验等- 上一期,讲到了关于线程死锁.用户进程.用户线 ...

最新文章

  1. native react 更新机制_深度使用react-native的热更新能力,必须知道的一个shell命令...
  2. 【鸿蒙 HarmonyOS】UI 组件 ( 单选按钮 | RadioButton 与 RadioContainer 组件 )
  3. 【机器学习】SVM学习(三):线性分类器的求解
  4. 获取http请求响应头
  5. python decorator_python 中的decorator
  6. 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
  7. Java11.0.2怎么生成JRE_java环境变量配置,jdk13.0.1中没有jre解决办法
  8. 通过js跳转url下载包含中文的文件乱码问题解决方案(java)
  9. 类扩展(Class Extension)
  10. Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
  11. linux小米随身wifi驱动下载,小米随身wifi驱动
  12. 兆,字节,位等单位转换
  13. VS2008 Pocket PC 2003 SE仿真程序上网设置
  14. 四种基础博弈 巴什博奕+威佐夫博奕+斐波那契博弈+K倍博弈
  15. APP - IOS_Application 常用推荐
  16. 什么镜头最适合拍风景_单反相机拍风景选什么样的镜头好?
  17. 3.Hadoop3.x 项目测试
  18. c语言里的fun是什么函数,c语言fun函数有什么作用
  19. 大数据征信迎爆发时机 这几家企业或将率先破局
  20. 转换芯片-TC358775XBG:MIPI转LVDS(双路)芯片资料

热门文章

  1. PHP新的连接MySQL方法mysqli
  2. Confluence 6 配置索引语言
  3. SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法...
  4. 重磅消息:全球首个光量子计算机诞生!
  5. android4.2 高用zing拍照后,返回其它页面操作时,主线程关掉或程序退出的问题解决...
  6. linux fdisk 分区
  7. 金蝶ERP实现产品入库冲减生产现场虚仓毛坯数
  8. 二维(字符)数组输入(转载)
  9. JAVA——利用wait和notify实现生产者和消费者
  10. centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课