Dictionary<TKey,TValue>.KeyCollection.ICollection.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 ICollection.
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
Wartość właściwości
Obiekt, który może służyć do synchronizowania dostępu do obiektu ICollection. W domyślnej implementacji klasy Dictionary<TKey,TValue>.KeyCollectionta właściwość zawsze zwraca bieżące wystąpienie.
Implementuje
Uwagi
Domyślne implementacje kolekcji w programie System.Collections.Generic nie są synchronizowane.
Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania. Aby zezwolić wielu wątkom na dostęp do kolekcji w celu odczytu i zapisu danych, należy zaimplementować własny mechanizm synchronizacji.
SyncRoot Zwraca obiekt, który może służyć do synchronizowania dostępu do obiektu ICollection. Synchronizacja jest efektywna tylko wtedy, gdy wszystkie wątki blokują ten obiekt przed uzyskaniem dostępu do kolekcji. Poniższy kod przedstawia użycie SyncRoot właściwości dla języków C#, C++i 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);
}
Pobieranie wartości tej właściwości jest operacją O(1).