Sdílet prostřednictvím


ReadOnlyCollectionBase.ICollection.SyncRoot Vlastnost

Definice

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

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

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

Implementuje

Příklady

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

// Get the ICollection interface from the ReadOnlyCollectionBase
// derived class.
ICollection myCollection = myReadOnlyCollection;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Get the ICollection interface from the ReadOnlyCollectionBase
' derived class.
Dim myCollection As ICollection = myReadOnlyCollection
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 O(1) operace.

Poznámky

Odvozené třídy mohou poskytovat vlastní synchronizovanou verzi ReadOnlyCollectionBase třídy pomocí SyncRoot vlastnosti. Synchronizační kód musí provádět operace s SyncRoot vlastností objektu ReadOnlyCollectionBase , nikoli přímo na objektu ReadOnlyCollectionBase . 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 ReadOnlyCollectionBase 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

Viz také