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

Определение

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

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

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

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

Реализации

Комментарии

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

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

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

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

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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