Array.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 Arrayau .
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public:
virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Public Overridable ReadOnly Property SyncRoot As Object
Valeur de propriété
Objet qui peut être utilisé pour synchroniser l’accès au Array.
Implémente
Exemples
L’exemple de code suivant montre comment verrouiller un tableau pendant l’énumération entière à l’aide de la SyncRoot propriété.
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
foreach (Object item in myArray)
Console.WriteLine(item);
}
let myArray = [| 1; 2; 4|]
lock myArray.SyncRoot (fun () ->
for item in myArray do
printfn $"{item}" )
Dim myArray As Array = New Integer() { 1, 2, 4 }
SyncLock(myArray.SyncRoot)
For Each item As Object In myArray
Console.WriteLine(item)
Next
End SyncLock
Remarques
Cette propriété implémente l’interface System.Collections.ICollection .
Les classes .NET basées sur Array leur propre version synchronisée de la collection à l’aide de la SyncRoot propriété.
Les classes qui utilisent des tableaux peuvent également implémenter leur propre synchronisation à l’aide de la SyncRoot propriété. Le code de synchronisation doit effectuer des opérations sur la SyncRoot collection, et non directement sur la collection. Cela garantit le bon fonctionnement des collections dérivées d’autres objets. Plus précisément, il gère une synchronisation appropriée avec d’autres threads susceptibles de modifier simultanément la collection. Notez que certaines implémentations peuvent SyncRoot retourner la Array valeur elle-même.
L’énumération par le biais d’une collection n’est intrinsèquement pas une procédure sécurisée de thread. Même lorsqu’une collection est synchronisée, d’autres threads peuvent toujours modifier la collection, ce qui provoque la levée d’une exception par l’énumérateur. Pour garantir la sécurité des threads pendant l’énumération, vous pouvez verrouiller la collection pendant toute l’énumération ou intercepter les exceptions résultant des modifications apportées par d’autres threads.
La récupération de la valeur de cette propriété est une opération O(1).