Foxtable(狐表)用户栏目专家坐堂 → 无端端报错The given key was not present in the dictionary.


  共有3905人关注过本帖树形打印复制链接

主题:无端端报错The given key was not present in the dictionary.

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/17 17:11:00 [显示全部帖子]

 意思是 【给定的键在字典中不存在

 

 比如你字典里面 abc 这个键值,但是你用了如 MyEditDic("abc") 就会报错。

 

 你改一下代码

 

    Dim Key As String = msg.SubString(2,msg.Length - 4)
    If MyEditDic.Containskey(Key) = False Then '如果无人编辑此行
        MyEditDic.Add(Key,e.UserName) '登记申请者为此行的编辑者
        e.ReturnValue = "OK" '通知申请者可以编辑
    ElseIf MyEditDic.Containskey(Key) AndAlso MyEditDic(Key) = e.UserName Then '如果申请者就是之前登记的编辑者
        e.ReturnValue = "OK" '通知申请者可以编辑
    Else '如果之前登记的编辑者为其他人
        Dim dr As DataRow = DataTables("MUser").SQLFind("MUserID ='" & MyEditDic(Key) & "'")
        If dr Is Nothing Then
            e.ReturnValue ="用户" & MyEditDic(Key) & " 正在编辑!" & vbcrlf & vbcrlf & "您若想编辑,请通知他保存或退出"  '告知申请者是谁在编辑此行
        Else
            e.ReturnValue ="用户" &  MyEditDic(Key) & ":" & dr("MUserName") & " 正在编辑!" & vbcrlf & vbcrlf & "您若想编辑,请通知他保存或退出"  '告知申
        End If
    End If


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/17 18:39:00 [显示全部帖子]

 有可能有并发情况,特别是你有 MyEditDic.Remove(Key) 这句代码。

 

 某一时刻判断是存在的,但就在那个时候,修改了值,就可能导致冲突。


 回到顶部