Sdílet prostřednictvím


ListDictionary.SyncRoot Vlastnost

Definice

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

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

Hodnota vlastnosti

Objekt, který lze použít k synchronizaci přístupu k objektu ListDictionary.

Implementuje

Příklady

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

ListDictionary^ myCollection = gcnew ListDictionary();
bool lockTaken = false;
try
{
    Monitor::Enter(myCollection->SyncRoot, lockTaken);
    for each (Object^ item in myCollection)
    {
        // Insert your code here.
    }
}
finally
{
    if (lockTaken)
    {
        Monitor::Exit(myCollection->SyncRoot);
    }
}
ListDictionary myCollection = new ListDictionary();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As New ListDictionary()
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 ListDictionary pomocí SyncRoot vlastnosti. Synchronizující kód musí provádět operace s objektem SyncRootListDictionary, nikoli přímo na ListDictionary. Tím zajistíte správnou funkci kolekcí, které jsou odvozeny z jiných objektů. Konkrétně udržuje správnou synchronizaci s jinými vlákny, která můžou současně upravovat ListDictionary objekt.

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Platí pro

Viz také