ReadOnlyCollection<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 nástroje ReadOnlyCollection<T>vrátí tato vlastnost vždy aktuální instanci.
Implementuje
Poznámky
Výchozí implementace kolekcí v systému System.Collections.Generic se nesynchronují.
Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. Abyste zajistili 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šechna vlákna uzamknou tento objekt před přístupem ke kolekci. Následující kód ukazuje použití SyncRoot vlastnosti pro C#, Visual 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).
Tento člen je explicitní implementace členu rozhraní. Lze jej použít pouze v ReadOnlyCollection<T> případě, že je instance přetypovaná na IDisposable rozhraní.