我知道这个例外已经解决了十亿次,但我的情况略有不同(我认为)。
无论如何,我正在使用 ProtoBuf - Net 来保存和加载对象。我有一个我试图反序列化的对象列表,但它一直在说(它来了):
Collection was modified; enumeration operation may not execute.
再一次,我在这里看到这个问题被问了 50 次,所以我很抱歉 50 次,但这里是代码:
public void Load(){
using (var file =
File.Exists(Application.StartupPath + @"\TestFile.scn") ?
File.OpenRead("TestFile.scn") :
null){
if (file != null){
this._tlpGrid.Controls.Clear();
this.Scenes = Serializer.Deserialize<List<GraphicsPanel>>(file);
foreach(GraphicsPanel gp in this._lgpScenes)
this.AddScene(gp);
}
}
}
为什么它会抛出那个异常,如果我做错了,那么正确的方法是什么?
编辑:有人告诉我 AddScene 方法正在修改列表。没错:原文:
public void AddScene(GraphicsPanel Scene){
this._tlpGrid.Controls.Add(Scene);
this.Scenes.Add(Scene);
}
修改的:
public void AddScene(GraphicsPanel Scene){
this._tlpGrid.Controls.Add(Scene);
if (!this.Scenes.Contains(Scene))
this.Scenes.Add(Scene);
}
问题已得到解答,非常感谢。