Queue<T>.ICollection.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 .ICollection
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 ICollection. Ve výchozí implementaci Queue<T>této vlastnosti vždy vrátí aktuální instanci.
Implementuje
Poznámky
Výchozí implementacekolekcch System.Collections.Generic
Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. Chcete-li zaručit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Chcete-li více vláknům umožnit přístup ke kolekci pro čtení a zápis, musíte implementovat svou vlastní synchronizaci.
SyncRoot vrátí objekt, který lze použít k synchronizaci přístupu k objektu ICollection. Synchronizace je platná pouze v případě, že všechny vlákna uzamknou tento objekt před přístupem k kolekci. Následující kód ukazuje použití SyncRoot vlastnosti pro C#, C++ a Visual Basic.
ICollection ic = ...;
lock (ic.SyncRoot) {
// Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
' Access the collection.
End SyncLock
ICollection^ ic = ...;
try {
Monitor::Enter(ic->SyncRoot);
// Access the collection.
}
finally {
Monitor::Exit(ic->SyncRoot);
}
Načtení hodnoty této vlastnosti je operace O(1).