Quizás alguien pueda indicarme la dirección correcta, porque estoy completamente perplejo con esto.Extraño "La colección se modificó después de que se haya creado la instancia del enumerador" excepción
que tienen una función que simplemente imprime un LinkedList de las clases:
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("------");
}
El objeto Component
en realidad tiene una costumbre ToString()
llamada como tal:
int Id;
...
public override String ToString()
{
return GetType() + ": " + Id;
}
Esta función normalmente funciona bien - sin embargo, Me he encontrado con el problema de que cuando se compila con aproximadamente 30 entradas de la lista, la declaración PrintcomplentList
foreach
vuelve con un InvalidOperationException: Collection was modified after the enumerator was instantiated.
Ahora como puede ver, no estoy modificando el código dentro del ciclo for, y no he creado ningún subproceso explícitamente, aunque esto se encuentra dentro de un entorno XNA (si es que importa). Cabe señalar que la impresión es lo suficientemente frecuente como para que la salida de la consola reduzca la velocidad del programa en su conjunto.
Estoy completamente perplejo, ¿alguien más ha topado con esto?
Eso suena extremadamente extraño. ¿Podría publicar un programa corto pero * completo * para que podamos intentar reproducirlo? –
Veré lo que puedo hacer. – cyberconte
No puedo obtener un pequeño programa para replicar el comportamiento, así que voy a ver cómo obtener una implementación segura de subprocesos de LinkedList para ver si detecta algo. – cyberconte