ReadOnlyCollection<T>.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 ReadOnlyCollection<T>, cette propriété retourne toujours l'instance actuelle.

Implémente

Remarques

Les implémentations par défaut des collections dans 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.

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

La récupération de la valeur de cette propriété est une opération O(1).

Ce membre est une implémentation d'un membre d'interface explicite. Il peut uniquement être utilisé lorsque l'instance de ReadOnlyCollection<T> est castée en interface IDisposable.

S’applique à

Voir aussi