Freigeben über


CollectionBase.System.Collections.ICollection.SyncRoot-Eigenschaft

Hinweis: Dieser Namespace oder Member bzw. diese Klasse wird nur von .NET Framework, Version 1.1, unterstützt.

Ruft ein Objekt ab, mit dem der Zugriff auf CollectionBase synchronisiert werden kann.

Private ReadOnly Property SyncRoot As Object Implements _   ICollection.SyncRoot
[C#]
object ICollection.SyncRoot {get;}
[C++]
private: __property Object*
   System::Collections::ICollection::get_SyncRoot();
[JScript]
private function get ICollection.SyncRoot() : Object;

Eigenschaftenwert

Ein Objekt, mit dem der Zugriff auf die CollectionBase synchronisiert werden kann.

Implementiert

ICollection.SyncRoot

Hinweise

Abgeleitete Klassen können mit Hilfe der SyncRoot-Eigenschaft eine eigene synchronisierte Version von CollectionBase bereitstellen. Im Synchronisierungscode dürfen Operationen nicht direkt für die CollectionBase durchgeführt werden, sondern müssen über SyncRoot der CollectionBase erfolgen. Dies gewährleistet die einwandfreie Funktion von Auflistungen, die von anderen Objekten abgeleitet sind. Genauer gesagt wird die ordnungsgemäße Synchronisierung mit anderen Threads gewährleistet, die eventuell zur gleichen Zeit Änderungen am CollectionBase-Objekt vornehmen.

Die Enumeration einer Auflistung ist systemintern keine threadsichere Prozedur. Auch wenn eine Auflistung synchronisiert ist, besteht die Möglichkeit, dass weitere Threads die Auflistung verändern. Wenn dies der Fall ist, löst der Enumerator eine Ausnahme aus. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren, oder Sie können die durch andere Threads aufgrund von Änderungen ausgelösten Ausnahmen abfangen.

[Visual Basic, C#] Das folgende Codebeispiel veranschaulicht, wie die Auflistung mit Hilfe von SyncRoot während der gesamten Enumeration gesperrt wird:

 
CollectionBase myCollection = new CollectionBase();
 lock( myCollection.SyncRoot ) {
 foreach ( Object item in myCollection ) {
 // Insert your code here.
 }
}
[Visual Basic] 
Dim myCollection As New CollectionBase()
Dim item As Object
SyncLock myCollection.SyncRoot
 For Each item In myCollection
 ' Insert your code here.
 Next item
End SyncLock

Anforderungen

Plattformen: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003-Familie

Siehe auch

CollectionBase-Klasse | CollectionBase-Member | System.Collections-Namespace | IsSynchronized