Queue<T>.ICollection.SyncRoot Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 Queue<T>, cette propriété retourne toujours l'instance actuelle.
Implémente
Remarques
Les implémentations par défaut des regroupements 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.
SyncRoot retourne un objet qui peut être utilisé pour synchroniser l'accès à ICollection. La synchronisation est effective uniquement 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#, 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).