ICollection.IsSynchronized 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á hodnotu označující, zda je přístup k ICollection této synchronizaci (bezpečné vlákno).
public:
property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean
Hodnota vlastnosti
true pokud je přístup k sadě ICollection synchronizován (bezpečné vlákno); v opačném případě false.
Poznámky
SyncRoot vrátí objekt, který lze použít k synchronizaci přístupu k objektu ICollection.
Většina tříd kolekcí v System.Collections oboru názvů také implementuje synchronizovanou metodu, která poskytuje synchronizovaný obálku kolem podkladové kolekce.
Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.
Následující příklad kódu ukazuje, jak uzamknout kolekci pomocí SyncRoot vlastnosti během celého výčtu.
ICollection myCollection = someCollection;
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As ICollection = someCollection
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock