ICollection.IsSynchronized Właściwość

Definicja

Pobiera wartość wskazującą, czy dostęp do elementu ICollection jest synchronizowany (bezpieczny wątk).

C#
public bool IsSynchronized { get; }

Wartość właściwości

truejeśli dostęp do elementu ICollection jest synchronizowany (bezpieczny wątk); w przeciwnym razie . false

Uwagi

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

Większość klas kolekcji w System.Collections przestrzeni nazw implementuje również metodę Synchronized, która zapewnia zsynchronizowaną otokę wokół bazowej kolekcji.

Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.

Poniższy przykład kodu pokazuje, jak zablokować kolekcję przy użyciu SyncRoot właściwości podczas całego wyliczenia.

C#
ICollection myCollection = someCollection;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

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 1.1, 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

Zobacz też