【发布时间】:2013-12-15 07:10:09
【问题描述】:
我在 C# 中得到以下异常
索引超出了数组的范围。
在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
在 System.Collections.Generic.Dictionary`2.System.Collections.IDictionary.set_Item(对象键,对象值)中
应用程序与 SQL Server 在同一台计算机上运行。在第一次出现异常后,对这个字典的所有后续操作都会 100% 得到这个异常。那时服务器内存使用率为 98%,SQL server 占用 85%+。据我了解,如果其他应用程序正在获取,SQL Server 将释放内存,但似乎并非如此。
所以问题是:
- 字典在扩展失败时是否会出现索引越界?还是我的例外是由于其他原因?
- 如果 1 为真,关于如何在应用程序和 SQL 服务器之前平衡内存使用的任何建议?
更新
按要求添加代码:
if (data == null)
return;
var obj = CacheData<T>();
lock (obj)
{
obj[data.ID] = data; <== exception occurs here
}
【问题讨论】:
-
什么时候得到异常?是在您循环按键时吗?就像@MitchWheat 所说,没有代码,没有答案。
标签: c# sql-server dictionary