Я работаю над проектом по разработке изображений, и вместо Hashset вместо массива я использовал Hashset, чтобы не добавлять повторяющиеся URL-адреса при сборке URL-адресов, я достиг точки кода, чтобы перебрать Hashset, содержащий основные URL-адреса и внутри итерации я иду и загружаю страницу основного URL-адреса и добавляю их в Хашет, и продолжаю, и во время итерации я должен исключать каждый отсканированный URL-адрес, а также исключать (удалять) каждый URL-адрес, который заканчивается jpg, до тех пор, пока счет Хасета url не достигнет 0, вопрос в том, что я столкнулся с бесконечным циклом на этой итерации, где я могу получить url (давайте назовем его X)Обработка Hashset, чтобы избежать застревания в цикле во время итерации
1- Я просматриваю страницу URL-адреса X 2 - получить все URL страницы X (путем применения фильтров) 3- Добавить URLs к HashSet с использованием unioinwith 4- удалить отсканированное URL-адрес X
проблема возникает здесь, когда один из URL-адресов Y, при сканировании принести X снова
мне использовать словарь и ключ, как «сканируется "?? Я попытаюсь опубликовать результат здесь, извините, что мне приходит в голову после того, как я разместил вопрос ...
Мне удалось решить его для одного URL-адреса, но, похоже, с другими URL-адресами создается цикл, поэтому как обрабатывать Hashset, чтобы избежать дублирования даже после удаления ссылок ,,, Надеюсь, что моя точка зрения понятна.
while (URL_Can.Count != 0)
{
tempURL = URL_Can.First();
if (tempURL.EndsWith("jpg"))
{
URL_CanToSave.Add(tempURL);
URL_Can.Remove(tempURL);
}
else
{
if (ExtractUrlsfromLink(client, tempURL, filterlink1).Contains(toAvoidLoopinLinks))
{
URL_Can.Remove(tempURL);
URL_Can.Remove(toAvoidLoopinLinks);
}
else
{
URL_Can.UnionWith(ExtractUrlsfromLink(client, tempURL, filterlink1));
URL_Can.UnionWith(ExtractUrlsfromLink(client, tempURL, filterlink2));
URL_Can.Remove(tempURL);
richTextBox2.PerformSafely(() => richTextBox2.AppendText(tempURL + "\n"));
}
}
toAvoidLoopinLinks = tempURL;
}