Коллекция была изменена, операция перечисления может не выполняться

У меня есть многопоточное приложение, и я получаю эту ошибку

************** 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()
   ...

У меня, вероятно, проблемы с моей коллекцией, потому что в одном потоке я читаю свою коллекцию, а в другом потоке я изменяю коллекцию.

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


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

Я пытаюсь заблокировать коллекцию с помощью этого кода, но это не работает.

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

Есть идеи по устранению этой проблемы?

7
задан PATO7 29 March 2012 в 12:14
поделиться