Dictionary<TKey,TValue>.KeyCollection.ICollection.SyncRoot Właściwość

Definicja

Pobiera obiekt, który może służyć do synchronizowania dostępu do ICollection .Gets an object that can be used to synchronize access to the 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

Object

Obiekt, który może służyć do synchronizowania dostępu do ICollection .An object that can be used to synchronize access to the ICollection. W domyślnej implementacji programu Dictionary<TKey,TValue>.KeyCollection Ta właściwość zawsze zwraca bieżące wystąpienie.In the default implementation of Dictionary<TKey,TValue>.KeyCollection, this property always returns the current instance.

Implementuje

Uwagi

Implementacje domyślne kolekcji w programie System.Collections.Generic nie są zsynchronizowane.Default implementations of collections in System.Collections.Generic are not synchronized.

Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość.Enumerating through a collection is intrinsically not a thread-safe procedure. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. Aby zezwolić wielu wątkom na dostęp do kolekcji w celu odczytu i zapisu danych, należy zaimplementować własny mechanizm synchronizacji.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

SyncRoot zwraca obiekt, który może służyć do synchronizowania dostępu do elementu ICollection .SyncRoot returns an object that can be used to synchronize access to the ICollection. Synchronizacja jest skuteczna tylko wtedy, gdy wszystkie wątki blokują ten obiekt przed uzyskaniem dostępu do kolekcji.Synchronization is effective only if all threads lock this object before accessing the collection. Poniższy kod przedstawia użycie SyncRoot właściwości dla języków C#, C++ i Visual Basic.The following code shows the use of the SyncRoot property for C#, C++, and 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).Retrieving the value of this property is an O(1) operation.

Dotyczy

Zobacz też