Dictionary是非线程安全的类型,操作的时候需要对其进行线程安全处理,最简单的方式就是加锁(lock)。

数据变量:

private static Dictionary<string, VirtualVideoChannel> m_list_video_channel_all = new Dictionary<string, VirtualVideoChannel>();

加锁代码:

        /// <summary>/// 创建设备通道连接/// </summary>/// <param name="sim"></param>private void CreateNewChannelConnection(string sim){var m_tcp_order = new Network.TCPChannel(txtServer.Text.Trim(), Convert.ToInt32(numPort.Value));// 设置Tag为SIM卡号m_tcp_order.Tag = sim;m_tcp_order.DataReceive = Receive;m_tcp_order.DataSend = DataSend;m_tcp_order.ChannelConnect += channel_ChannelConnect;m_tcp_order.Connect();// 映射SIM号和连接对象lock (m_sim_dictionary){if (m_sim_dictionary.ContainsKey(sim)){TCPChannel tcpChannel;m_sim_dictionary.TryGetValue(sim, out tcpChannel);if (tcpChannel != null){tcpChannel.Close();m_sim_dictionary.Remove(sim);}}m_sim_dictionary.Add(sim, m_tcp_order);}}

同样的,List也不是线程安全的,同样都需要如此处理,当然可以换成别的方式来做。

C# Dictionary多线程安全访问问题相关推荐

  1. Java并发编程(03):多线程并发访问,同步控制

    本文源码:GitHub·点这里 || GitEE·点这里 一.并发问题 多线程学习的时候,要面对的第一个复杂问题就是,并发模式下变量的访问,如果不理清楚内在流程和原因,经常会出现这样一个问题:线程处理 ...

  2. jmu-Java-07多线程-同步访问 (10分)

    jmu-Java-07多线程-同步访问 (10分) 现已有Account类,拥有 属性: private int balance 方法: 相应的getter方法. 要求为该类编写: void depo ...

  3. jmu-Java-07多线程-互斥访问 (5分)

    6-8 jmu-Java-07多线程-互斥访问 (5分) 定义Account类 属性: private int balance 方法: getter方法 void deposit(int money) ...

  4. java复选框互斥_jmu-Java-07多线程-互斥访问 (5分)

    6-8 jmu-Java-07多线程-互斥访问 (5分) 定义Account类 属性: private int balance 方法: getter方法 void deposit(int money) ...

  5. ios并发会造成什么问题_iOS Core data多线程并发访问的问题

    大家都知道Core data本身并不是一个并发安全的架构:不过针对多线程访问带来的问题,Apple给出了很多指导:同时很多第三方的开发者也贡献了很多解决方法.不过最近碰到的一个问题很奇怪,觉得有一定的 ...

  6. java 线程访问控件_多线程下访问控件的方式

    前言 在很多情况下,我们都会使用到多线程,在使用多线程的时候,我们很多时候又会去访问控件,这里面就会出现很多问题!!!我以一个最常见的,我们经常会用到的例子来讲讲,在提高自己水平的同时,希望能给大家带 ...

  7. 模拟售票大厅实例——多线程时访问共享变量时的安全(CMutex或CCriticalSection的应用)

    当程序运行时,可以通过多线程来提高程序运行的效率和拥有更好的体验.但多线程(或多进程)同时也带来很多的问题:最严重的莫过于对同一个对象或变量访问时,由于线程运行异步的原因,会造成程序运行出现无法控制的 ...

  8. python多线程并发访问数据库连接池原理以及代码

    现状 在工作中难免会使用数据库,为了能够高效并发访问数据库,数据库连接池必不可少,由于本站copy模式盛行,导致数据库连接池被错误使用,遇到错误甚至追求能跑通就行. 本文就python版本的数据库链接 ...

  9. python多线程实现访问页面_Python实现多线程爬虫

    最近在写爬虫程序爬取亚马逊上的评论信息,因此也自学了很多爬虫相关的知识,其实网络上已经有很多基于Python的入门爬虫程序了,所以学习起来比较方便,唯独那个多线程爬虫一直都学的不是很明白,所以就写下这 ...

最新文章

  1. [转载] 七龙珠第一部——第079话 金角跟银角
  2. supervisor的常用命令
  3. 导入训练好的决策树文件_决策树在sklearn中的实现
  4. HTML5新特性之WebRTC
  5. java 循环stringbuffer_java常用类-----StringBuilder和StringBuffer的用法
  6. Cisco防火墙基础介绍及配置
  7. ceph修改osd服务器IP,ceph增加osd流程
  8. 性能优化-图片压缩格式的选择(ETC和ASTC)
  9. HDS AMS 更换控制器和控制器缓存
  10. SaaS 系统的应用与架构
  11. python string类型的英文句子逆序输出
  12. 微信小程序汇率计算界面
  13. 自然语言处理研究报告
  14. 浏览此博客者开年必时来运转,否极泰来
  15. 简单的职工信息管理系统(运用了存储过程,和datagridview,dataset的设置)
  16. Default Constructor的构造操作
  17. 批量下载二维码并打成zip压缩包
  18. 产品经理——数据分析比较好用的工具和网站
  19. 关于计算机方面的知识小故事,「计算机小故事」-奇妙的HelloWorld任务
  20. 成都计算机职高学校排名,成都计算机职高排名

热门文章

  1. 计算机系统引导失败怎么办,电脑开机出现引导失败怎么办 是什么原因造成的...
  2. windows7 配置php开发环境
  3. Oauth 第三方授权登陆 facebook google twitter instagram
  4. javaScript判断当前浏览器(谷歌、火狐、IE)兼容IE11
  5. OpenCV批量读取路径下所有图片
  6. 2014高考英语听力,男约女终于成功了
  7. 如何用计算机进行绘画,怎么用电脑画画-PS电脑手绘的5个基本步骤,轻松自学成PS手绘达人...
  8. 012-数据结构-树形结构-哈希树[hashtree]、字典树[trietree]、后缀树
  9. 为何现在的程序员没工作动力,迷茫、中年危机普遍发生?
  10. 仅用 1/4 数据量还原真人语音100%细节,火山语音上新超自然对话语音合成技术...