DTSReadOnlyCollectionBase.SyncRoot Propriété

Définition

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

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 au DTSReadOnlyCollectionBase.

Implémente

Exemples

L’exemple de code suivant montre comment verrouiller une ArrayList collection en utilisant le SyncRoot pendant l’énumération.

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 dérivez de DTSReadOnlyCollectionBase, vous pouvez fournir votre propre version synchronisée de la collection en utilisant 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 maintient une synchronisation correcte avec d’autres threads qui pourraient modifier simultanément l’objet.

L’énumération par le biais 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 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. Pour plus d’informations, voir ICollection.IsSynchronized.

S’applique à