Я пишу многопотоковый менеджер загрузок, в котором информация о загрузке управляется классом, который я написал (называется DownloadOperation). Загрузки хранятся в списке (называемом загрузкой). Мне нужно удалить объекты из списка, когда функция класса (queryCompleted) возвращает true, но выяснила, что элементы не могут быть удалены из списков из цикла foreach. Каков наилучший способ получить тот же эффект. Я относительно новичок в C#, так что помилуй мою глупость.Удаление элементов из списка при выполнении условия
private void removeInactiveDownloads()
{
foreach (DownloadOperation dl in download)
{
if (dl.queryComplete() == true)
{
// if download is no longer in progress it is removed from the list.
download.Remove(dl);
}
}
}
Редактировать - Исправлена ошибка в примере кода.
Большое спасибо! Кажется, это работает отлично. – user2544563
Добро пожаловать :) (хотя запрос LINQ от Patashu намного более краткий) – keyboardP
+1 Ключевым моментом является то, что вы не используете объект IEnumerator. –