SortedDictionary<TKey,TValue>.KeyCollection.ICollection.SyncRoot Propriété

Définition

Obtient un objet qui peut être utilisé pour synchroniser l’accès à 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

Valeur de propriété

Objet qui peut être utilisé pour synchroniser l'accès à ICollection. Dans l'implémentation par défaut de SortedDictionary<TKey,TValue>.KeyCollection, cette propriété retourne toujours l'instance actuelle.

Implémente

Remarques

Les implémentations par défaut de collections dans l'espace de noms System.Collections.Generic ne sont pas synchronisées.

L'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Pour garantir la sécurité des threads pendant l'énumération, vous pouvez verrouiller la collection tout au long de cette opération. Pour permettre à plusieurs threads d’accéder en lecture et en écriture à la collection, vous devez implémenter votre propre synchronisation.

La SyncRoot propriété retourne un objet qui peut être utilisé pour synchroniser l’accès à .ICollection La synchronisation n’est effective que si tous les threads verrouillent l’objet avant d’accéder à la collection. Le code suivant montre l’utilisation de la SyncRoot propriété pour C#, C++ et 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);  
}  

L’obtention de la valeur de cette propriété est une opération O(1).

S’applique à

Voir aussi