Freigeben über


NameObjectCollectionBase.KeysCollection.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 NameObjectCollectionBase.KeysCollection 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 NameObjectCollectionBase.KeysCollection synchronisiert werden kann.

Hinweise

Abgeleitete Klassen können mit Hilfe der SyncRoot-Eigenschaft eine eigene synchronisierte Version von NameObjectCollectionBase.KeysCollection bereitstellen. Im Synchronisierungscode dürfen Operationen nicht direkt für die NameObjectCollectionBase.KeysCollection durchgeführt werden, sondern müssen über SyncRoot der NameObjectCollectionBase.KeysCollection 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 NameObjectCollectionBase.KeysCollection-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:

 
KeysCollection myCollection = new KeysCollection();
 lock( myCollection.SyncRoot ) {
 foreach ( Object item in myCollection ) {
 // Insert your code here.
 }
}
[Visual Basic] 
Dim myCollection As New KeysCollection()
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

NameObjectCollectionBase.KeysCollection-Klasse | NameObjectCollectionBase.KeysCollection-Member | System.Collections.Specialized-Namespace | IsSynchronized