Partager via


ForEachItem.SyncRoot Propriété

Définition

Obtient un objet qui peut être utilisé pour synchroniser l’accès à la collection.

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.

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.

S’applique à