我有一本字典,如果字典中的项目经过我想要删除它的所有处理。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