Exportar (0) Imprimir
Expandir todo

ReadOnlyCollectionBase.ICollection.SyncRoot (Propiedad)

Actualización: noviembre 2007

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

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

Object ICollection.SyncRoot { get; }
J# admite el uso de implementaciones de interfaces explícitas, pero no admite la declaración de implementaciones nuevas.
JScript no admite implementaciones explícitas de interfaces.

Valor de propiedad

Tipo: System.Object
Objeto que se puede utilizar para sincronizar el acceso al objeto ReadOnlyCollectionBase.

Implementaciones

ICollection.SyncRoot

Las clases derivadas pueden proporcionar su propia versión sincronizada de la clase ReadOnlyCollectionBase mediante la propiedad SyncRoot. El código de sincronización debe realizar operaciones en la propiedad SyncRoot del objeto ReadOnlyCollectionBase y no directamente en el propio objeto ReadOnlyCollectionBase. 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 ReadOnlyCollectionBase.

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 la propiedad SyncRoot durante toda la enumeración.

ReadOnlyCollectionBase myCollection = new ReadOnlyCollectionBase();
  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).

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft