ForEachItems.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 à la collection ForEachItems.
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Valeur de propriété
Objet qui peut être utilisé pour synchroniser l'accès à la collection ForEachItems.
Implémente
Exemples
L’exemple de code suivant montre comment verrouiller une ArrayList
collection à l’aide de l’énumération SyncRoot .
using System;
using System.Collections;
ArrayList myCollection = new ArrayList();
lock( myCollection.SyncRoot )
foreach ( Object item in myCollection )
{
// Insert your code here.
}
Imports System
Imports System.Collections
Dim myCollection As ArrayList = New ArrayList()
lock(myCollection.SyncRoot)
For Each item In myCollection
' Insert your code here.
Next
Remarques
Implémente ICollection.IsSynchronized. Si vous créez une collection personnalisée et que vous dérivez DTSReadOnlyCollectionBase, vous pouvez fournir votre propre version synchronisée de la collection à 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 un 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 qui peuvent modifier simultanément l’objet.
L'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Même lorsqu’une collection est synchronisée, d’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 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. Pour plus d’informations, consultez ICollection.IsSynchronized.