Hashtable.SyncRoot Właściwość

Definicja

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

C#
public virtual object SyncRoot { get; }

Wartość właściwości

Obiekt, który może służyć do synchronizowania dostępu do obiektu Hashtable.

Implementuje

Uwagi

Aby utworzyć zsynchronizowaną wersję elementu Hashtable, użyj Synchronized metody . Jednak klasy pochodne mogą zapewnić własną zsynchronizowaną wersję Hashtable przy użyciu SyncRoot właściwości . Synchronizowanie kodu musi wykonywać operacje na obiekcie SyncRootHashtable, a nie bezpośrednio w obiekcie Hashtable. 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ć Hashtable obiekt.

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#
var myCollection = new Hashtable();
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 2.0, 2.1
UWP 10.0

Zobacz też