Seltsam, "die Auflistung wurde geändert, nachdem der enumerator instanziiert wurde" Ausnahme

Vielleicht jemand kann mich in die richtige Richtung, da bin ich völlig überfragt.

Ich habe eine Funktion, die einfach druckt eine LinkedList Klassen:

    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("------");
    }

Den Component Objekt tatsächlich hat Sie eine benutzerdefinierte ToString() nennen als solche:

    int Id;
    ...
    public override String ToString()
    {
        return GetType() + ": " + Id;
    }

Diese Funktion in der Regel gut funktioniert - aber ich habe, laufen in das Problem, dass, wenn es baut auf über 30 oder so Einträge in der Liste, die PrintcomplentList foreach Aussage kommt zurück mit einer InvalidOperationException: Collection was modified after the enumerator was instantiated.

Nun, wie Sie sehen können, dass ich mich nicht ändern Sie den code innerhalb der for-Schleife, und ich habe nicht explizit erstellt threads, obwohl dies innerhalb eines XNA-Umgebung (falls es darauf ankommt). Es sollte angemerkt werden, dass der Ausdruck ist Häufig genug, dass die Ausgabe in der Konsole verlangsamt das Programm als ganzes.

Ich bin völlig ratlos, hat jemand dort draussen in dieser?

Das klingt extrem seltsam. Könnte Sie post ein kurzes, aber komplett - Programm, damit wir versuchen können, um es zu reproduzieren?
Ich werde sehen, was ich tun kann.
Ich cna nicht bekommen ein kleines Programm zu replizieren, die Verhalten, so werde ich sehen, darum ein thread-sichere Implementierung der LinkedList in dort zu sehen, ob es fängt alles

InformationsquelleAutor cyberconte | 2009-05-10

Schreibe einen Kommentar