我目前有一个线程,它在一个阶段通过ForEach循环不断地通过List(CustomClass)。我的问题是,如果我尝试从它抛出的UI线程中修改该列表:
Collection was modified; enumeration operation may not execute
我尝试使用SyncLock,它显然不像我想的那样工作,我也试过了:
Dim TempList As System.Collections.ObjectModel.ReadOnlyCollection(Of CustomClass) = G_.ActiveEnts.AsReadOnly
For each _Element in TempList
'Do stuff
Next
和它的其他变体,比如转换为数组
答案 0 :(得分:0)
当然在写完这个问题大约5秒后,我决定在每次访问List的时候放一个SyncLock,而不是仅仅在线程中。因此,每当我修改它的列表SyncLocks它和它修复它。