Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

NameObjectCollectionBase.ICollection.SyncRoot, propriété

Obtient un objet qui peut être utilisé pour synchroniser l'accès à NameObjectCollectionBase.

Espace de noms :  System.Collections.Specialized
Assembly :  System (dans System.dll)
Object ICollection.SyncRoot { get; }

Valeur de propriété

Type : System.Object
Objet pouvant être utilisé pour synchroniser l'accès à l'objet NameObjectCollectionBase.

Implémentations

ICollection.SyncRoot

Les classes dérivées peuvent produire leur propre version synchronisée de la classe NameObjectCollectionBase à l'aide de la propriété SyncRoot. Le code de synchronisation doit effectuer des opérations sur la propriété SyncRoot de l'objet NameObjectCollectionBase, et non directement sur l'objet NameObjectCollectionBase. Cela garantit un fonctionnement correct des collections dérivées d'autres objets. Plus particulièrement, la synchronisation est assurée avec les autres threads qui pourraient modifier simultanément l'objet NameObjectCollectionBase.

L'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Même lorsqu'une collection est synchronisée, les autres threads peuvent toujours modifier la collection, ce qui entraîne la levée d'une exception par l'énumérateur. Pour garantir la sécurité des threads lors de l'énumération, vous pouvez verrouiller la collection pour toute la durée de l'énumération ou intercepter les exceptions résultant de modifications apportées par d'autres threads.

L'exemple de code suivant montre comment verrouiller la collection à l'aide de SyncRoot au cours de l'énumération entière.


// Create a collection derived from NameObjectCollectionBase
ICollection myCollection = new DerivedCollection();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}


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

.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ