以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 无端端报错The given key was not present in the dictionary. (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89231) |
||||||||
-- 作者:chen3728060 -- 发布时间:2016/8/17 17:02:00 -- 无端端报错The given key was not present in the dictionary. .NET Framework 版本:2.0.50727.3662
搜索之前的帖子,有这个问题,但是没有答案,因为当时官方让发帖人给出代码,发帖人给不出。
今天我发这个问题,也一样是给不出代码。因为不知道是什么功能触发的,我只能描述一下我的情况。
这个代码是出现在我开发作为QQClient服务器的程序,代码是很少的,就是启动QQClient,与Dictionary有关的,只有2个变量,一个是自动编号用的,一个是独占编辑用的
Public CodeDic As New Dictionary(of String,Integer)\'网络自动编号 Public MyEditDic As new Dictionary(of String,String)\'独占编辑
[此贴子已经被作者于2016/8/17 17:03:28编辑过]
|
||||||||
-- 作者:大红袍 -- 发布时间:2016/8/17 17:11:00 -- 意思是 【给定的键在字典中不存在】
比如你字典里面 abc 这个键值,但是你用了如 MyEditDic("abc") 就会报错。
你改一下代码
Dim Key As String = msg.SubString(2,msg.Length - 4) |
||||||||
-- 作者:chen3728060 -- 发布时间:2016/8/17 18:30:00 -- 此主题相关图片如下:1.jpg 在第一个if已经判断了是否有这个键,存在这个键才到下一步elseif,为啥还要重新判断? |
||||||||
-- 作者:大红袍 -- 发布时间:2016/8/17 18:39:00 -- 有可能有并发情况,特别是你有 MyEditDic.Remove(Key) 这句代码。
某一时刻判断是存在的,但就在那个时候,修改了值,就可能导致冲突。 |