Piszę wielowątkowy menedżer pobierania, w którym informacje o pobieraniu są zarządzane przez klasę, którą napisałem (nazywane DownloadOperation). Pliki do pobrania są przechowywane na liście (nazywane pobieraniem). Muszę usunąć obiekty z listy, gdy funkcja w klasie (queryCompleted) zwraca wartość true, ale okazało się, że elementów nie można usunąć z list z pętli foreach. Jaki jest najlepszy sposób na uzyskanie tego samego efektu. Jestem stosunkowo nowy w C#, więc wybacz moją głupotę.Usuwanie pozycji z listy po spełnieniu warunku
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);
}
}
}
Edytuj - poprawiono błąd w przykładowym kodzie.
Dziękuję bardzo! To wydaje się działać idealnie. – user2544563
Nie ma za co :) (chociaż zapytanie LINQ firmy Patashu jest dużo bardziej zwięzłe) – keyboardP
+1 Kluczem jest to, że nie używasz obiektu 'IEnumerator'. –