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
|
NameObjectCollectionBase.ICollection.SyncRoot, propriété
Obtient un objet qui peut être utilisé pour synchroniser l'accès à NameObjectCollectionBase.
Assembly : System (dans System.dll)
Valeur de propriété
Type : System.ObjectObjet pouvant être utilisé pour synchroniser l'accès à l'objet NameObjectCollectionBase.
Implémentations
ICollection.SyncRootLes 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.
La récupération de la valeur de cette propriété est une opération O(1).
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.