多线程投掷异常列表

时间:2013-12-11 00:45:25

标签: vb.net multithreading

我目前有一个线程,它在一个阶段通过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

和它的其他变体,比如转换为数组

1 个答案:

答案 0 :(得分:0)

当然在写完这个问题大约5秒后,我决定在每次访问List的时候放一个SyncLock,而不是仅仅在线程中。因此,每当我修改它的列表SyncLocks它和它修复它。