【发布时间】:2014-09-19 03:03:33
【问题描述】:
我遇到了错误:
System.InvalidOperationException:集合已修改;枚举操作可能无法执行。
在我的代码中,有一些字符、对象等的哈希表需要不断地读取和删除。我的代码使用foreach 循环对哈希表中的所有值执行某些操作,但是说一个字符注销,因为foreach 正在循环...并且哈希表已修改...繁荣,错误。
请注意,任何直接修改哈希表的foreach 代码都会被复制到列表中,并从那里编辑父列表,这不是问题。问题是读取不断编辑的哈希表。
所以我了解什么问题是什么,只是不是解决问题的最佳方法。下面是一个偶尔会抛出集合修改错误的简单代码示例:
foreach (Character CC in World.H_Chars.Values)
{
if (CC.MyGuild != null && CC.MyGuild.GuildName != G.GuildName
&& CC.MyGuild.Allies.ContainsValue(G.GuildName))
{
CC.MyClient.AddSend(Data); // error on this line
CC.MyClient.EndSend();
}
}
所以我想我的问题是,通过不断修改的对象哈希表的最佳方法是什么?
【问题讨论】:
-
所以 .. 你的意思是你希望它是线程安全的?
-
是的,我想,如果这样可以解决问题。
标签: c# loops exception collections foreach