List<T>.ICollection.SyncRoot Właściwość

Definicja

Pobiera obiekt, który może służyć do synchronizowania dostępu do obiektu ICollection.

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

Wartość właściwości

Obiekt, który może służyć do synchronizowania dostępu do obiektu ICollection. W domyślnej implementacji List<T>tej właściwości zawsze zwraca bieżące wystąpienie.

Implementuje

Uwagi

Domyślne implementacje kolekcji w System.Collections.Generic przestrzeni nazw nie są synchronizowane.

Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania. Aby zezwolić wielu wątkom na dostęp do kolekcji w celu odczytu i zapisu danych, należy zaimplementować własny mechanizm synchronizacji.

SyncRoot zwraca obiekt, który może służyć do synchronizowania dostępu do obiektu ICollection. Synchronizacja jest skuteczna tylko wtedy, gdy wszystkie wątki blokują ten obiekt przed uzyskaniem dostępu do kolekcji. Poniższy kod przedstawia użycie SyncRoot właściwości dla języków C#, C++i Visual Basic.

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

Pobieranie wartości tej właściwości jest operacją O(1).

Dotyczy

Produkt Wersje
.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.6, 2.0, 2.1
UWP 10.0

Zobacz też