"Коллекция была изменена" - там, где она не была изменена - C#

Узнай цену своей работы

Формулировка задачи:

Непойму что за глюканы творятся... Код:
while (sitemapUrls.Count != sitemapUrlsChecks.Count)
            {
                var sitemapUrlsTmp = sitemapUrls;
                lock (sitemapUrlsTmp)
                {
                    foreach (var url in sitemapUrlsTmp)
                    {
                        if (!sitemapUrlsChecks.Contains(url))
                        {
                            if (url.Contains(startSiteUrl))
                            {
                                DumpHRefs(url);
                                sitemapUrlsChecks.Add(url); //добавляем в чекнутые
                            }
                        }
                    }
                }//lock
            }
Как видите перед тем как делать

foreach

я занес коллекцию во временную переменную

sitemapUrlsTmp

которая не меняется нигде больше! А все равно
Дополнительные сведения: Коллекция была изменена; невозможно выполнить операцию перечисления.

ps

где вычитал что нужно добавить

оператор lock

но после его появления ситуация не изменилась(((

Решение задачи: «"Коллекция была изменена" - там, где она не была изменена»

textual
Листинг программы
var sitemapUrlsTmp = sitemapUrls;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы