Compartir vía


SortedDictionary<TKey,TValue>.KeyCollection.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 SortedDictionary<TKey,TValue>.KeyCollection, 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.

La SyncRoot propiedad devuelve un objeto que se puede usar para sincronizar el ICollectionacceso a . La sincronización solo es efectiva si todos los subprocesos bloquean el 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);  
}  

Obtener el valor de esta propiedad es una operación O(1).

Se aplica a

Consulte también