我在C#中得到以下异常
索引超出了数组的范围。
System.Collections.Generic.Dictionary`2.Insert中的(TKey键,TValue值,布尔加法)
System.Collections.Generic.Dictionary`2.System.Collections.IDictionary.set_Item(Object key,Object value)中的
应用程序在同一台计算机上运行SQL Server。在第一次出现异常后,此字典上的所有后续操作都将获得100%的此异常。那时服务器内存使用率为98%,SQL服务器占用率为85%+。根据我的理解,如果其他应用程序正在获取,SQL Server将释放内存,但似乎并非如此。
所以问题是:
按要求添加代码:
if (data == null)
return;
var obj = CacheData<T>();
lock (obj)
{
obj[data.ID] = data; <== exception occurs here
}
答案 0 :(得分:1)
这可能是一个并发问题。也许你忘了在其他地方锁定你的字典(obj)? 无论如何,你可以使用ConcurrentDictionary,这是线程安全的。