1
我知道这个异常已被解决像十亿次,但我的情况稍有不同(我认为)。试图列举一个反序列化的列表抛出一个异常
无论如何,我使用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);
}
的问题已经回答了,非常感谢。
AddScene()是做什么的? – Ric
我假设'AddScene'正在修改'_lgpScenes',在列举它的时候你不能这样做。 – Lee
AAAAHGH你是对的!编辑代码来反映。 – Will