如何解决给定的键在字典异常中不存在
我有一个用c#C#编写的websocket服务器。当我处理服务器中客户端的数据包时,出现错误:
The given key ´4´ was not present in the dictionary.
此键存在。其他键没有这个问题。代码通过if语句。
string rawdata = Encoding.UTF8.GetString(decoded);
string[] msgdata = rawdata.Split("--");
int funcId = int.Parse(msgdata[0]);
if (Server.packetHandlersWS.ContainsKey(funcId)) {
Server.packetHandlersWS[funcId](id,msgdata);
}
我尝试清理项目,尝试删除项目中的.pdb文件并重建。这些都不能解决问题。
解决方法
由于packetHandlersWS
是Dictionary<,>
(根据评论),因此很有可能破坏了内部状态,因为您没有进行任何同步-Dictionary<,>
是不是线程安全的。在这种情况下,切换到ConcurrentDictionary<,>
很有可能会解决此问题(注意:您仍应将TryGetValue
与ConcurrentDictionary<,>
一起使用,以避免出现其他竞争情况)。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。