Array.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 Array této synchronizaci (bezpečné vlákno).
public:
property bool IsSynchronized { bool get(); };
public:
virtual property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
public virtual bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean
Public Overridable ReadOnly Property IsSynchronized As Boolean
Hodnota vlastnosti
Tato vlastnost je vždy false určena pro všechna pole.
Implementuje
Příklady
Následující příklad kódu ukazuje, jak uzamknout pole během celého výčtu SyncRoot pomocí vlastnosti.
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
foreach (Object item in myArray)
Console.WriteLine(item);
}
let myArray = [| 1; 2; 4|]
lock myArray.SyncRoot (fun () ->
for item in myArray do
printfn $"{item}" )
Dim myArray As Array = New Integer() { 1, 2, 4 }
SyncLock(myArray.SyncRoot)
For Each item As Object In myArray
Console.WriteLine(item)
Next
End SyncLock
Poznámky
Array implementuje IsSynchronized vlastnost, protože je vyžadována rozhraním System.Collections.ICollection .
Třídy .NET založené na Array tom, že poskytují vlastní synchronizovanou verzi kolekce pomocí SyncRoot vlastnosti.
Třídy, které používají pole, mohou také implementovat vlastní synchronizaci pomocí SyncRoot vlastnosti. Synchronizační kód musí provádět operace SyncRoot s kolekcí, nikoli přímo v kolekci. Tím se zajistí správná operace kolekcí odvozených z jiných objektů. Konkrétně udržuje správnou synchronizaci s jinými vlákny, která mohou současně upravovat kolekci. Všimněte si, že některé implementace SyncRoot můžou vrátit Array sám sebe.
Výčet prostřednictvím kolekce není vnitřně bezpečným postupem vlákna. 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.
Načtení hodnoty této vlastnosti je operace O(1).