4

运行以下代码时,有时会出现以下错误:

 System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Interfaces.InterfaceBase.GetSettings()  

我正在使用以下代码:

For Each dr As DataRow In dsData.Tables("tblData").Rows  
    If InterfaceSettings.ContainsKey(dr("SettingsName").ToString.Trim) = False Then  
        InterfaceSettings.Add(dr("SettingsName").ToString.Trim, dr("SettingsValue").ToString.Trim)  
    End If  
Next

我在数据库表中没有重复项。知道为什么这会失败吗?

提前感谢您的任何帮助。

4

1 回答 1

2

当代码在尝试添加密钥之前检查密钥时,如何发生重复密钥异常?

我认为答案是代码是共享的。当一个线程检查条件并即将更新字典但被另一个线程中断时发生错误,该线程随后更新字典,然后原始线程执行相同操作导致重复键异常。

于 2013-07-26T02:04:22.890 回答