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


Collection<T>.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. В реализации Collection<T>по умолчанию это свойство всегда возвращает текущий экземпляр.

Реализации

Комментарии

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

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

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

ICollection ic = ...;
lock (ic.SyncRoot) {
   // Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
   ' Access the collection.
End SyncLock

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

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

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