Dictionary<TKey,TValue>.ICollection.SyncRoot Свойство

Определение

Получает объект, с помощью которого можно синхронизировать доступ к коллекции ICollection.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

Значение свойства

Объект, который может быть использован для синхронизации доступа к коллекции ICollection.

Реализации

Комментарии

Используемые по умолчанию реализации коллекций в пространстве имен System.Collections.Generic не синхронизированы.

Перечисление коллекции не является потокобезопасной процедурой. Чтобы гарантировать потокобезопасность, можно заблокировать коллекцию на время всего перечисления. Чтобы разрешить доступ к коллекции из нескольких потоков для чтения и записи, необходимо реализовать собственную синхронизацию.

Свойство SyncRoot возвращает объект , который можно использовать для синхронизации доступа к объекту ICollection. Синхронизация действует только в том случае, если все потоки блокируют объект перед доступом к коллекции. В следующем коде показано использование SyncRoot свойства для C#, C++ и Visual Basic.

ICollection ic = ...;
lock (ic.SyncRoot) {
   // Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
   ' Access the collection.
End SyncLock
ICollection^ ic = ...;
try {
   Monitor::Enter(ic->SyncRoot);
   // Access the collection.
}
finally {
   Monitor::Exit(ic->SyncRoot);
}

Получение значения этого свойства является операцией O(1).

Применяется к

См. также раздел