SortedList.SyncRoot Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá objekt, který lze použít k synchronizaci přístupu k objektu SortedList .
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
Objekt, který lze použít k synchronizaci přístupu k objektu SortedList .
Implementuje
Příklady
Následující příklad kódu ukazuje, jak uzamknout kolekci pomocí SyncRoot vlastnosti během celého výčtu.
SortedList myCollection = new SortedList();
lock (myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New SortedList()
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock
Načtení hodnoty této vlastnosti je O(1) operace.
Poznámky
K vytvoření synchronizované verze objektu SortedList použijte metodu Synchronized . Odvozené třídy však mohou poskytovat vlastní synchronizovanou verzi SortedList použití SyncRoot vlastnosti. Synchronizační kód musí provádět operace s SyncRootSortedList, nikoli přímo na straně SortedList. 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 SortedList 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.