Sdílet prostřednictvím


Array.IsSynchronized Vlastnost

Definice

Získá hodnotu označující, zda je přístup k ho Array synchronizován (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

Boolean

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 = gcnew array<Int32> { 1, 2, 4 };
try
{
    Monitor::Enter(myArray->SyncRoot); 
        
    for each (Int32 item in myArray)
        Console::WriteLine(item);
}
finally
{
    Monitor::Exit(myArray->SyncRoot);
}
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án rozhraním System.Collections.ICollection .

Třídy .NET založené na Array poskytování vlastní synchronizované verze 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 zajistíte správnou funkci kolekcí, které jsou odvozeny 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 samotnou implementaci.

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem vlákna. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Načtení hodnoty této vlastnosti je operace O(1).

Platí pro

Viz také