Sto scrivendo un download manager multi-threaded in cui scaricare informazioni è gestito da una classe che ho scritto (chiamato DownloadOperation). I download sono contenuti in un elenco (chiamato download). Devo rimuovere gli oggetti dall'elenco quando una funzione nella classe (queryCompletata) restituisce true, ma ha scoperto che gli elementi non possono essere rimossi dagli elenchi dall'interno di un ciclo foreach. Qual è il modo migliore per avere lo stesso effetto. Sono relativamente nuovo a C# quindi perdoni la mia stupidità.Rimozione di elementi da un elenco quando una condizione è soddisfatta
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);
}
}
}
Modifica - Corretto un errore nel codice di esempio.
Grazie mille! Sembra funzionare perfettamente. – user2544563
Prego :) (anche se la query LINQ di Patashu è molto più concisa) – keyboardP
+1 La chiave è che non si sta utilizzando un oggetto 'IEnumerator'. –