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