上传程序Dictionary 字典 哈希--多读一写锁ReaderWriterLock
//上传程序Dictionary 字典 哈希 /// <summary> /// 车辆控制信息哈斯表,Key是终端号,Value是车辆信息控制对象 /// </summary> private Dictionary<string, MsgObject> _MsgObjectHashMap = new Dictionary<string, MsgObject>(); public Dictionary<string, MsgObject> MsgObjectHashMap { get { return _MsgObjectHashMap; } } //用法 //判断是否包含 if (LogicManager.MsgObjectHashMap.ContainsKey(key)) { MsgObject controlObject = LogicManager.MsgObjectHashMap[key]; //删除 LogicManager.MsgObjectHashMap.Remove(key);//处理之后移除 //添加 if (!LogicManager.MsgObjectHashMap.ContainsKey(msgObjeKey)) { LogicManager.MsgObjectHashMap.Add(msgObjeKey, controlObject); } ----------- /// <summary> /// 连接列表 /// </summary> public Dictionary<string, CAPacket> CaSessionTable = new Dictionary<string, CAPacket>(); //读写锁 /// <summary> /// 车辆控制信息哈斯表锁 /// </summary> private ReaderWriterLock _MsgObjectHashMapLock = new ReaderWriterLock(); public ReaderWriterLock MsgObjectHashMapLock { get { return _MsgObjectHashMapLock; } } //用法: LogicManager.DriverInfoHashMapLock.AcquireReaderLock(5000);//设定5000毫秒 获取读锁 if (LogicManager.DriverInfoHashMapLock.IsReaderLockHeld) //判断一下在释放锁 { LogicManager.DriverInfoHashMapLock.ReleaseLock(); //或.ReleaseReaderLock(); } //更新驾驶员信息 LogicManager.DriverInfoHashMapLock.AcquireWriterLock(5000); if (LogicManager.DriverInfoHashMapLock.IsWriterLockHeld) { LogicManager.DriverInfoHashMapLock.ReleaseWriterLock(); }