Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

CollectionBase.ICollection.SyncRoot (Propiedad)

Obtiene un objeto que se puede utilizar para sincronizar el acceso a CollectionBase.

Espacio de nombres:  System.Collections
Ensamblados:   mscorlib (en mscorlib.dll)
  System.Collections.NonGeneric (en System.Collections.NonGeneric.dll)

Object ICollection.SyncRoot { get; }

Valor de propiedad

Tipo: System.Object
Objeto que se puede utilizar para sincronizar el acceso a CollectionBase.

Implementaciones

ICollection.SyncRoot

Las clases derivadas pueden proporcionar su propia versión sincronizada de CollectionBase mediante la propiedad SyncRoot. El código de sincronización deberá realizar operaciones en la propiedad SyncRoot de la clase CollectionBase, no directamente en la colección CollectionBase. Esto garantiza un funcionamiento correcto de las colecciones que se derivan de otros objetos. En concreto, mantiene la sincronización correcta con otros subprocesos que podrían modificar al mismo tiempo el objeto CollectionBase.

Por su naturaleza, la enumeración mediante una colección no es un procedimiento seguro para la ejecución de subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, es posible bloquear la colección durante toda la enumeración o detectar las excepciones provocadas por los cambios que efectúen otros subprocesos.

En el siguiente ejemplo de código se muestra cómo bloquear la colección utilizando SyncRoot durante toda la enumeración:


// Get the ICollection interface from the CollectionBase
// derived class.
ICollection myCollection = myCollectionBase;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}


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

.NET Framework

Compatible con: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8,1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no es compatible con todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, consulte Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar: