Freigeben über


CollectionBase.ICollection.IsSynchronized Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob der Zugriff auf die CollectionBase Synchronisierung (Threadsicher) erfolgt.

property bool System::Collections::ICollection::IsSynchronized { bool get(); };
bool System.Collections.ICollection.IsSynchronized { get; }
member this.System.Collections.ICollection.IsSynchronized : bool
 ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized

Eigenschaftswert

true wenn der Zugriff auf die CollectionBase Synchronisierung erfolgt (Threadsicher); andernfalls false. Der Standardwert lautet false.

Implementiert

Hinweise

Eine CollectionBase Instanz wird nicht synchronisiert. Abgeleitete Klassen können eine synchronisierte Version der CollectionBase Eigenschaft SyncRoot bereitstellen.

Das Aufzählen durch eine Sammlung ist in der Regel keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können 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.

Das folgende Codebeispiel zeigt, wie die Auflistung mithilfe der SyncRoot gesamten Enumeration gesperrt wird:

// Get the ICollection interface from the CollectionBase
// derived class.
ICollection myCollection = myCollectionBase;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Get the ICollection interface from the CollectionBase
' derived class.
Dim myCollection As ICollection = myCollectionBase
SyncLock myCollection.SyncRoot
    For Each item As Object In myCollection
        ' Insert your code here.
    Next item
End SyncLock

Das Abrufen des Werts dieser Eigenschaft ist ein O(1) Vorgang.

Gilt für:

Weitere Informationen