DictionaryBase.ICollection.SyncRoot Vlastnost

Definice

Získává objekt, který lze použít k synchronizaci přístupu k DictionaryBase objektu.Gets an object that can be used to synchronize access to a DictionaryBase object.

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

Hodnota vlastnosti

Object

Objekt, který lze použít k synchronizaci přístupu k DictionaryBase objektu.An object that can be used to synchronize access to the DictionaryBase object.

Implementuje

Příklady

Následující příklad kódu ukazuje, jak uzamknout kolekci pomocí SyncRoot vlastnosti během celého výčtu.The following code example shows how to lock the collection using the SyncRoot property during the entire enumeration.

ICollection^ myCollection = gcnew ShortStringDictionary();
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);
    }
}
ICollection myCollection = new ShortStringDictionary();
lock(myCollection.SyncRoot)
{
    foreach (Object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As ICollection = New ShortStringDictionary()
SyncLock myCollection.SyncRoot
    For Each item In myCollection
        ' Insert your code here.
    Next item
End SyncLock

Načítání hodnoty této vlastnosti je O(1) operace.Retrieving the value of this property is an O(1) operation.

Poznámky

Odvozené třídy mohou poskytnout svou vlastní synchronizovanou verzi DictionaryBase třídy pomocí SyncRoot Vlastnosti.Derived classes can provide their own synchronized version of the DictionaryBase class using the SyncRoot property. Synchronizační kód musí provádět operace s SyncRoot vlastností DictionaryBase objektu, nikoli přímo na DictionaryBase objekt.The synchronizing code must perform operations on the SyncRoot property of the DictionaryBase object, not directly on the DictionaryBase object. Tím zajistíte správnou funkci kolekcí, které jsou odvozeny z jiných objektů.This ensures proper operation of collections that are derived from other objects. Konkrétně udržuje správnou synchronizaci s dalšími vlákny, které mohou současně upravovat DictionaryBase objekt.Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the DictionaryBase object.

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken.Enumerating through a collection is intrinsically not a thread-safe procedure. 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.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 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.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Platí pro

Viz také