Sdílet prostřednictvím


ReadOnlyCollection<T>.ICollection.SyncRoot Vlastnost

Definice

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í.

Platí pro

Viz také