我正在編寫一個多線程下載管理器,其中下載信息由我寫的類(稱爲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
不客氣:)(儘管Patashu的LINQ查詢更加簡潔) – keyboardP
+1這裏的關鍵是您沒有使用IEnumerator對象。 –