Sdílet prostřednictvím


StringDictionary.SyncRoot Vlastnost

Definice

Získá objekt, který lze použít k synchronizaci přístupu k StringDictionary.

public:
 virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public Overridable ReadOnly Property SyncRoot As Object

Hodnota vlastnosti

Lze Object použít k synchronizaci přístupu k objektu StringDictionary.

Příklady

Následující příklad kódu ukazuje, jak uzamknout kolekci pomocí celého výčtu SyncRoot .

StringDictionary myCollection = new StringDictionary();
lock(myCollection.SyncRoot)
{
    foreach (Object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As New StringDictionary()
SyncLock myCollection.SyncRoot
    For Each item As Object In myCollection
        ' Insert your code here.
    Next item
End SyncLock

Načtení hodnoty této vlastnosti je operace O(1).

Poznámky

Odvozené třídy mohou poskytovat vlastní synchronizovanou verzi StringDictionary použití SyncRoot vlastnosti. Synchronizační kód musí provádět operace s SyncRootStringDictionary, nikoli přímo na straně StringDictionary. Tím se zajistí správná operace kolekcí odvozených z jiných objektů. Konkrétně udržuje správnou synchronizaci s jinými vlákny, která mohou současně upravovat StringDictionary objekt.

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Platí pro