我有下面的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 getter/setter中有一个锁。但是我想知道是否应该锁定这段代码,以便在使用'bandEdgeList'时CicApplication.BandEdgeCache的内容不会改变。
如果'BandEdgeCache'是一个可编辑的收集,以及,你可以有效地丢失在您的本地列表中的项目,可以有一个不符合你的'Coater'条件,或者可以在列表不再在项目BandEdgeCache'集合以及下面答案中的问题。 – Marc