Прочитать на английском

Поделиться через


ReadOnlyCollection<T>.ICollection.SyncRoot Свойство

Определение

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

object System.Collections.ICollection.SyncRoot { get; }

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

Объект, который может быть использован для синхронизации доступа к коллекции ICollection. В используемой по умолчанию реализации ReadOnlyCollection<T> это свойство всегда возвращает текущий экземпляр.

Реализации

Комментарии

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

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

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

ICollection ic = ...;  
lock (ic.SyncRoot) {  
   // Access the collection.  
}  

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

Этот член представляет собой явную реализацию члена интерфейса. Он может использоваться, только если экземпляр ReadOnlyCollection<T> приведен к типу интерфейса IDisposable.

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

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