DTSReadOnlyCollectionBase.SyncRoot Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.