从哈希表集合中删除所有项目

时间:2012-03-21 18:02:04

标签: asp.net hashtable

我正在尝试使用此代码删除我的Hashtable中的所有项目

Monitor.Enter(myhasatable);
 foreach (object key in myhasatable.Keys)
            {

                    myhasatable.Remove(key.ToString());

            }
 Monitor.Exit(myhasatable);

我收到错误:

  

system.invalidoperationexception集合已修改枚举   操作可能无法执行

他们我的服务器卡住了,直到我刷新它

知道什么会导致这个问题吗?

Thnaks

3 个答案:

答案 0 :(得分:2)

您是否尝试过查阅文档?

myHashTable.Clear()

HashTable Members

HashTable.Clear()

答案 1 :(得分:1)

如何做:

myhasatable.Clear():

答案 2 :(得分:1)

迭代时,您无法修改集合。请尝试拨打Clear

另外,尽量避免在新代码中使用Hashtable。如果您有选择,请更喜欢使用Dictionary<TKey, TValue>

您的服务器死锁,因为之前在该行上抛出异常时未达到Monitor.Exit。您可以通过将该代码放在finally块中来解决此问题。但是,我建议您使用Monitor而不是使用lock,因为即使存在异常,它也会自动为您释放锁定。

通过所有这些更改,您的代码变得更加简单:

lock (dict)
{
    dict.Clear();
}