ReadOnlyCollection<T>.ICollection.SyncRoot Propiedad

Definición

Obtiene un objeto que se puede usar para sincronizar el acceso a 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

Valor de propiedad

Un objeto que se puede usar para sincronizar el acceso a la clase ICollection. En la implementación predeterminada de ReadOnlyCollection<T>, esta propiedad siempre devuelve la instancia actual.

Implementaciones

Comentarios

Las implementaciones predeterminadas de colecciones en System.Collections.Generic no se sincronizan.

Enumerar una colección no es intrínsecamente un procedimiento seguro para subprocesos. A fin de garantizar la seguridad de los subprocesos, se puede bloquear la colección durante toda la enumeración. Para permitir que varios subprocesos obtengan acceso de lectura y escritura a la colección, debe implementar su propia sincronización.

SyncRoot devuelve un objeto que se puede usar para sincronizar el ICollectionacceso a . La sincronización solo es efectiva si todos los subprocesos bloquean este objeto antes de acceder a la colección. El código siguiente muestra el uso de la SyncRoot propiedad para C#, Visual C++y 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);  
}  

La recuperación del valor de esta propiedad es una operación O(1).

Este miembro es una implementación explícita de un miembro de interfaz. Solo se puede utilizar cuando la instancia de ReadOnlyCollection<T> se convierte en una interfaz IDisposable.

Se aplica a

Consulte también