C# Collection was modified; enumeration operation may not execute.
翻译:集合已修改;枚举操作可能无法执行
foreach(var item in selectedNode.Childrens) { if(item.ProjectItem.FileName == fileName) { item.RemoveNode(); } }
错误原因
通常,.Net集合不支持同时遍历和修改。如果尝试在枚举期间修改集合列表,则会引发异常。因此,当遍历列表/字典集合时,无法对其集合元素进行修改。
解决方法
1 foreach(var item in selectedNode.Childrens.ToList()) 2 { 3 if(item.ProjectItem.FileName == fileName) 4 { 5 item.RemoveNode(); 6 } 7 }
或者
1 lock(selectedNode.Childrens) 2 { 3 foreach(var item in selectedNode.Childrens) 4 { 5 if(item.ProjectItem.FileName == fileName) 6 { 7 item.RemoveNode(); 8 } 9 } 10 }

浙公网安备 33010602011771号