也许有人可以指出我正确的方向,因为我完全被这件事难住了。
我有一个函数可以简单地打印出类的 LinkedList:
LinkedList<Component> components = new LinkedList<Component>();
...
private void PrintComponentList()
{
Console.WriteLine("---Component List: " + components.Count + " entries---");
foreach (Component c in components)
{
Console.WriteLine(c);
}
Console.WriteLine("------");
}
该Component
对象实际上有一个自定义ToString()
调用,如下所示:
int Id;
...
public override String ToString()
{
return GetType() + ": " + Id;
}
这个函数通常工作正常 - 但是我遇到了一个问题,当它构建到列表中大约 30 个左右的条目时,该PrintcomplentList
foreach
语句返回一个InvalidOperationException: Collection was modified after the enumerator was instantiated.
现在您可以看到,我没有在 for 循环中修改代码,也没有显式创建任何线程,尽管这是在 XNA 环境中(如果重要的话)。应该注意的是,打印输出的频率足够高,以至于控制台输出会降低整个程序的速度。
我完全被难住了,还有其他人遇到过这个吗?