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 }

 

posted @ 2022-07-01 16:38  羽小兮  阅读(1125)  评论(0)    收藏  举报