Array.IsSynchronized 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 une valeur indiquant si l’accès à Array est synchronisé (thread-safe).
public:
property bool IsSynchronized { bool get(); };
public:
virtual property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
public virtual bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean
Public Overridable ReadOnly Property IsSynchronized As Boolean
Valeur de propriété
Cette propriété est toujours false
pour tous les tableaux.
Implémente
Exemples
L’exemple de code suivant montre comment verrouiller un tableau pendant toute l’énumération à l’aide de la SyncRoot propriété .
Array^ myArray = gcnew array<Int32> { 1, 2, 4 };
try
{
Monitor::Enter(myArray->SyncRoot);
for each (Int32 item in myArray)
Console::WriteLine(item);
}
finally
{
Monitor::Exit(myArray->SyncRoot);
}
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
Array implémente la IsSynchronized propriété, car elle est requise par l’interface System.Collections.ICollection .
Les classes .NET basées sur Array fournissent 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 le SyncRoot
de la collection, pas directement sur la collection. Cela garantit un bon fonctionnement des collections dérivées d’autres objets. Plus précisément, il maintient une synchronisation appropriée avec d’autres threads qui peuvent modifier simultanément la collection. Notez que certaines implémentations de SyncRoot peuvent retourner le Array lui-même.
L’énumération par le biais d’une collection n’est pas intrinsèquement une procédure thread-safe. Même lorsqu'une collection est synchronisée, les autres threads peuvent toujours la modifier, 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 verrouiller la collection pendant l’ensemble de l’énumération ou bien 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).