Cette documentation est archivée et n’est pas conservée.

Array.SyncRoot, propriété

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

Espace de noms : System
Assembly : mscorlib (dans mscorlib.dll)

public Object SyncRoot { get; }
/** @property */
public final Object get_SyncRoot ()

public final function get SyncRoot () : Object

Valeur de la propriété

Objet pouvant être utilisé pour synchroniser l'accès à Array.

Cette propriété implémente l'interface System.Collections.ICollection.

Les classes .NET Framework basées sur Array fournissent leur propre version synchronisée de la collection à l'aide de la propriété SyncRoot.

Les classes qui utilisent des tableaux peuvent également implémenter leur propre synchronisation à l'aide de la propriété SyncRoot. Le code de synchronisation doit effectuer les opérations sur le SyncRoot de la collection, et non pas directement sur la collection. 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 la collection. Remarquez que certaines implémentations de SyncRoot peuvent retourner le Array proprement dit.

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 au cours de l'énumération, vous pouvez soit verrouiller la collection pendant l'ensemble de l'énumération, soit intercepter les exceptions résultant des modifications apportées par les autres threads.

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

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

Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot) 
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Afficher: