Dictionary<TKey,TValue>.ValueCollection.ICollection.SyncRoot Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 Dictionary<TKey,TValue>.ValueCollection, 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 puede utilizarse para sincronizar el acceso a ICollection. La sincronización solo es efectiva si todos los subprocesos bloquean este objeto antes de acceder a la colección. En el código siguiente se muestra el uso de la SyncRoot propiedad para C#, 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).