Die Auflistung wurde geändert, der Enumerationsvorgang kann nicht ausgeführt werden

Habe ich multithreads Anwendung, und ich bekomme diese Fehlermeldung

************** Exception Text **************
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   ...

Wahrscheinlich habe ich problem mit meiner Sammlung, weil in einem thread Las ich, meine Sammlung und meine in einem anderen thread, die ich ändern Sammlung.

public readonly ObservableCollectionThreadSafe<GMapMarker> Markers = new ObservableCollectionThreadSafe<GMapMarker>();


public void problem()
{
  foreach (GMapMarker m in Markers)
  {
    ...
  }
}

Ich versuche zu sperren, die Sammlung mit diesem code, funktioniert aber nicht.

public void problem()
    {
       lock(Markers)
       {
         foreach (GMapMarker m in Markers)
         {
           ...
         }
       }
    }

Irgendwelche Ideen um dieses problem zu beheben?

  • Problem ist mit dem code in der foreach, poste es bitte.
  • Sie nicht ändern Sammlung, während die Schleife mit foreach
InformationsquelleAutor PATO7 | 2012-03-29
Schreibe einen Kommentar