Dictionary<TKey,TValue>.KeyCollection.ICollection.SyncRoot Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá objekt, který lze použít k synchronizaci přístupu k .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
Hodnota vlastnosti
Objekt, který lze použít k synchronizaci přístupu k objektu ICollection. Ve výchozí implementaci vrátí Dictionary<TKey,TValue>.KeyCollectiontato vlastnost vždy aktuální instanci.
Implementuje
Poznámky
Výchozí implementace kolekcí v nástroji System.Collections.Generic se nesynchronují.
Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. Chcete-li zajistit bezpečnost vláken během výčtu, můžete uzamknout kolekci během celého výčtu. Chcete-li více vláknům umožnit přístup ke kolekci pro čtení a zápis, musíte implementovat svou vlastní synchronizaci.
SyncRoot vrátí objekt, který lze použít k synchronizaci přístupu k objektu ICollection. Synchronizace je účinná pouze v případě, že všechna vlákna uzamknou tento objekt před přístupem ke kolekci. Následující kód ukazuje použití SyncRoot vlastnosti pro jazyky C#, C++ a 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);
}
Načtení hodnoty této vlastnosti je operace O(1).