は、私は、次のC#のコードを持っている:ロック/同時実行の問題
1. List<BandEdge> bandEdgeList;
2.
3. bandEdgeList = CicApplication.BandEdgeCache.Where(row => row.Coater == coater).ToList();
4. foreach (BandEdge bandEdge in bandEdgeList)
5. {
6. ...
7. ...
8. }
私の質問はこれです。 3行目に 'bandEdgeList'が設定されると、別のスレッドがCicApplication.BandEdgeCacheの内容を変更した場合、 'bandEdgeList'の内容は無効になりますか?私はCicApplication.BandEdgeCacheゲッター/セッターにロックを持っています。しかし、私は 'bandEdgeList'で作業している間にCicApplication.BandEdgeCacheの内容が変更されないように、このコードブロックの周りにロックを置くべきかどうかと思います。
もし 'BandEdgeCache'も編集可能なコレクションであれば、あなたのローカルリストの項目が欠けている可能性があります。あなたの' Coater'条件を満たしていない項目があるかもしれません。以下の答えにある問題に加えて、 'BandEdgeCache'コレクションがあります。 – Marc