.net Hashtable插入失败。负载系数太高

时间:2010-01-27 23:41:28

标签: .net multithreading dictionary

我收到此错误:  Hashtable插入失败。负载系数太高。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.InvalidOperationException:Hashtable插入失败。负载系数太高。

在我的代码中,我在字典中查找一个键,如果它不在那里我添加它。经过一些研究后,我认为上面的错误是因为我试图两次添加相同的密钥。

static Dictionary<string, string> settings = new Dictionary<string, string>();

 if ((!settings.ContainsKey(Key)) || (settings[Key] == null)) 
            settings.Add(Key, AltValue);//Changes by Reliance Consulting

有更安全的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

你没说什么框架,但我假设是.NET:

  

此错误几乎总是由   多线程修改   Hashtable同时。修复是   在修改之前插入锁   Hashtable,因为Hashtable不是   多个作家线程安全。

对于.NET 2.0 ASP.NET环境,有一个可以解决您的问题的热修复: FIX: A System.InvalidOperationException exception occurs when you run a Web application that is based in the .NET Framework 2.0 SP2 or in the .NET Framework 3.5 SP1

答案 1 :(得分:0)

他们现在也有Windows Server 2003 x32 / x64的修复程序。