この例外が何十億回も対処されていることは知っていますが、私の状況は少し異なります (と思います)。
とにかく、私は 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);
}
質問が回答されました。どうもありがとうございました。