Queue<T>.ICollection.SyncRoot Eigenschaft

Definition

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

Object

Ein Objekt, mit dem der Zugriff auf ICollection synchronisiert werden kann. In der Standardimplementierung der Queue<T> gibt diese Eigenschaft immer die aktuelle Instanz zurück.

Implementiert

Hinweise

Standardmäßige Implementierungen von Auflistungen werden System.Collections.Generic 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 zurück, mit dem der Zugriff auf ICollection synchronisiert werden kann. Die Synchronisierung ist nur wirksam, wenn alle Threads dieses Objekt sperren, bevor Sie auf die Auflistung zugreifen. Der folgende Code zeigt die Verwendung der SyncRoot Eigenschaft für C#, 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.

Gilt für

Siehe auch