我有一本字典,如果字典中的項目經過我想要刪除它的所有處理。while循環中的字典和刪除字典中的項目
var dictEnum = dictObj.GetEnumerator();
while (dictEnum.MoveNext())
{
Parallel.ForEach(dictObj, pOpt, (KVP, loopState) =>
{
processAndRemove(KVP.Key);
});
}
private void processAndRemove(string keyId)
{
try
{
<does stuff>
dictObj.Remove(keyId);
} catch(exception ex) {
...
<does not remove anything, wants to retry until it doesn't fail>
}
}
我想讓循環繼續處理字典中的所有剩餘項目(未刪除)。
但是,我收到一個錯誤。當我運行此代碼的更簡單版本時,我收到一條消息:
集合已被修改;枚舉操作可能不會執行
有沒有辦法使用字典來做到這一點?
更新:
爲了給更多的上下文。這背後的想法是如果循環繼續運行,如果有dictObj中剩下的項目。所以如果我以10和8開始,我想重新運行直到他們沒有通過的2。
任務雖然是保持進程運行,直到我在字典(或其他容器)沒有更多的項目。我所要求的要求在一個過程中具有。 – webdad3 2013-04-30 22:29:34