DTSReadOnlyCollectionBase.SyncRoot Eigenschaft

Definition

Ruft ein Objekt ab, das zum Synchronisieren des Zugriffs auf die DTSReadOnlyCollectionBaseverwendet werden kann.

public:
 property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object

Eigenschaftswert

Ein Objekt, das zum Synchronisieren des Zugriffs auf die DTSReadOnlyCollectionBase.

Implementiert

Beispiele

Das folgende Codebeispiel zeigt, wie man eine ArrayList Sammlung während der Aufzählung mit dem sperrt 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  

Hinweise

Implementiert ICollection.IsSynchronized. Wenn Sie eine benutzerdefinierte Sammlung erstellen und daraus DTSReadOnlyCollectionBaseableiten, können Sie Ihre eigene synchronisierte Version der Sammlung mit der Eigenschaft SyncRoot bereitstellen. Der Synchronisierungscode muss Vorgänge für die SyncRoot Auflistung ausführen, nicht direkt für die Auflistung. Dadurch wird der ordnungsgemäße Betrieb von Auflistungen sichergestellt, die von anderen Objekten abgeleitet werden. Genauer gesagt hält er eine ordnungsgemäße Synchronisation mit anderen Threads, die das Objekt möglicherweise gleichzeitig verändern.

Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, könnten andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden. Weitere Informationen finden Sie unter ICollection.IsSynchronized.

Gilt für: