DictionaryBase.ICollection.SyncRoot Właściwość

Definicja

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

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 DictionaryBase obiektu.

Implementuje

Przykłady

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

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

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

Uwagi

Klasy pochodne mogą udostępniać własną zsynchronizowaną wersję DictionaryBase klasy przy użyciu SyncRoot właściwości . Synchronizowanie kodu musi wykonywać operacje na SyncRoot właściwości DictionaryBase obiektu, a nie bezpośrednio na DictionaryBase obiekcie. Gwarantuje to prawidłowe funkcjonowanie kolekcji, które są uzyskiwane z innych obiektów. W szczególności utrzymuje właściwą synchronizację z innymi wątkami, które mogą jednocześnie modyfikować DictionaryBase obiekt.

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.

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ż