我有以下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