Comparteix a través de


List<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 List<T>, esta propiedad siempre devuelve la instancia actual.

Implementaciones

Comentarios

Las implementaciones predeterminadas de las colecciones del espacio de nombres System.Collections.Generic no están sincronizadas.

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.

SyncRootdevuelve un objeto que se puede usar 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).

Se aplica a

Consulte también