如何枚举更新列表。 例如,我有以下代码:
For I as integer = 0 to MyList.Count-1
.......
.......
Next
当我运行此循环时,(MyList)是从另一个来源更新的,那么我会收到一条错误消息:“集合已被修改。”
我不想停止(MyList)的更新,并且我还需要一个列表实例与更新后的实例分开。 例如:如果(MyList)包含10个项目,然后再开始For ... Next循环并将从外部源更新的(MyList)循环变为12个项目,则我需要运行For .... Next仅用于10个项目,我不希望额外的2个项目。同时我也不想丢失这两个新项目。
我决定通过以下代码从(MyList)中复制一份:
m.ToList.AsEnumerable
因为(MyList)是'iEnumerable(Of DataRow)',但是我也遇到了相同的错误“收藏集已修改”
任何想法?
答案 0 :(得分:1)
如果您需要枚举列表,而其他线程可能正在更改它,则一种选择是仅将其复制(在C#中,因为我不太熟练VB):
var list = new List<int>(MyList);
for(int i = 0; i < list.Count; i++)
{
// process your original items
// regardless of whether someone adds or removes from 'MyList'
}