StringCollection.SyncRoot Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera obiekt, który może służyć do synchronizowania dostępu do obiektu StringCollection.
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Wartość właściwości
Obiekt, który może służyć do synchronizowania dostępu do obiektu StringCollection.
Implementuje
Uwagi
Klasy pochodne mogą udostępniać własną zsynchronizowaną wersję StringCollection przy użyciu SyncRoot właściwości . Synchronizowanie kodu musi wykonywać operacje na obiekcie SyncRootStringCollection, a nie bezpośrednio w obiekcie StringCollection. Zapewnia to właściwą operację kolekcji, które pochodzą z innych obiektów. W szczególności utrzymuje właściwą synchronizację z innymi wątkami, które mogą być jednocześnie modyfikowane obiektu StringCollection .
Wyliczanie za pośrednictwem kolekcji nie jest wewnętrznie bezpieczną procedurą wątku. Nawet w przypadku synchronizacji kolekcji inne wątki nadal mogą modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, możesz zablokować kolekcję podczas całego wyliczenia lub przechwycić wyjątki wynikające ze zmian wprowadzonych przez inne wątki.
W poniższym przykładzie kodu pokazano, jak zablokować kolekcję przy użyciu SyncRoot elementu w trakcie całego wyliczenia:
StringCollection myCollection = new StringCollection();
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New StringCollection()
SyncLock myCollection.SyncRoot
For Each item as Object In myCollection
' Insert your code here.
Next item
End SyncLock
Pobieranie wartości tej właściwości jest operacją O(1).