ReadOnlyCollection<T>.ICollection.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, mit dem der Zugriff auf ICollection synchronisiert werden kann.
property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot
Eigenschaftswert
Ein Objekt, mit dem der Zugriff auf ICollection synchronisiert werden kann. In der Standardimplementierung der ReadOnlyCollection<T> gibt diese Eigenschaft immer die aktuelle Instanz zurück.
Implementiert
Hinweise
Standardimplementierungen von Sammlungen in System.Collections.Generic werden nicht synchronisiert.
Die Enumeration einer Auflistung ist systemintern keine threadsichere Prozedur. Um während der Enumeration Threadsicherheit zu garantieren, können Sie die Auflistung während der gesamten Enumeration sperren. Um den Lese- und Schreibzugriff auf diese Auflistung durch mehrere Threads zuzulassen, müssen Sie eine eigene Synchronisierung implementieren.
SyncRoot Gibt ein Objekt, das verwendet werden kann, zum Synchronisieren des Zugriffs auf die ICollection. Die Synchronisierung ist nur wirksam, wenn alle Threads dieses Objekt vor dem Zugriff auf die Auflistung sperren. Der folgende Code zeigt die Verwendung der SyncRoot Eigenschaft für C#, Visual C++ und Visual Basic.
ICollection ic = ...;
lock (ic.SyncRoot) {
// Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
' Access the collection.
End SyncLock
ICollection^ ic = ...;
try {
Monitor::Enter(ic->SyncRoot);
// Access the collection.
}
finally {
Monitor::Exit(ic->SyncRoot);
}
Das Abrufen des Werts dieser Eigenschaft ist ein O(1)-Vorgang.
Bei diesem Member handelt es sich um eine explizite Schnittstellenmemberimplementierung. Er kann nur verwendet werden, wenn die ReadOnlyCollection<T>-Instanz in eine IDisposable-Schnittstelle umgewandelt wird.