Я сталкиваюсь ошибку:Еогеасп петля - коллекция была модифицирована исключение
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
На протяжении всего моего кода есть хэш-таблицы символов, объектов и т.д., которые постоянно должны быть считаны и удалены. В моем коде используется цикл 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();
}
}
Так что я думаю, мой вопрос, что это лучший способ, чтобы пройти через хэш-таблицу объектов, которые постоянно вносятся изменения?
Итак .. Вы имеете в виду, что хотите, чтобы он был потокобезопасным? –
Да, я думаю, если это исправит проблему. – user3882530