CollectionBase.ICollection.IsSynchronized Właściwość

Definicja

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

C#
bool System.Collections.ICollection.IsSynchronized { get; }

Wartość właściwości

truejeśli dostęp do elementu CollectionBase jest synchronizowany (bezpieczny wątk); w przeciwnym razie . false Wartość domyślna to false.

Implementuje

Uwagi

Wystąpienie CollectionBase nie jest zsynchronizowane. Klasy pochodne mogą zapewnić zsynchronizowaną wersję CollectionBase obiektu przy użyciu SyncRoot właściwości .

Wyliczanie za pomocą kolekcji nie jest wewnętrznie bezpieczną procedurą wątku. 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.

W poniższym przykładzie kodu pokazano, jak zablokować kolekcję przy użyciu SyncRoot elementu podczas całego wyliczenia:

C#
// Get the ICollection interface from the CollectionBase
// derived class.
ICollection myCollection = myCollectionBase;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

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 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 2.0, 2.1
UWP 10.0

Zobacz też