List<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 List<T>, 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.

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#, 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).

S’applique à

Voir aussi