2013-12-11 77 views
0

我目前有一个线程,在一个阶段通过一个ForEach循环不断经过一个List(的CustomClass)。我的问题是,如果我尝试修改从用户界面,列表线程它抛出一个:多线程抛出异常列表

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 

和其他变化,如转换为一个数组

+1

错误消息听起来更像是它是如何修改它而不是线程相关的 - 你不能从FOR/EACH循环中删除项目或者你得到那个错误 – Plutonix

+0

我没有在循环中修改它,只是读它。我正在修改UI线程中的列表。无论如何,我修复了它并发布了我的答案。 –

回答

0

当然,写了这个问题约5秒后,我决定把一个SyncLock放在列表的每一个访问,而不是在线程中。所以每当我修改它的SyncLocks的列表,并且这固定它。