Array.IsSynchronized Eigenschap

Definitie

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de Array synchronisatie is gesynchroniseerd (thread safe).

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

Waarde van eigenschap

Deze eigenschap is altijd false voor alle matrices.

Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een matrix vergrendelt tijdens de gehele inventarisatie met behulp van de SyncRoot eigenschap.

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

Opmerkingen

Array implementeert de IsSynchronized eigenschap omdat deze vereist is voor de System.Collections.ICollection interface.

.NET klassen op basis van Array hun eigen gesynchroniseerde versie van de verzameling bieden met behulp van de eigenschap SyncRoot.

Klassen die matrices gebruiken, kunnen ook hun eigen synchronisatie implementeren met behulp van de SyncRoot eigenschap. De synchronisatiecode moet bewerkingen uitvoeren op de SyncRoot verzameling, niet rechtstreeks op de verzameling. Dit zorgt voor de juiste werking van verzamelingen die zijn afgeleid van andere objecten. Het onderhoudt met name de juiste synchronisatie met andere threads die mogelijk tegelijkertijd de verzameling wijzigen. Houd er rekening mee dat sommige implementaties van SyncRoot het zelf mogelijk het Array zelf retourneren.

Het inventariseren via een verzameling is intrinsiek geen threadveilige procedure. Zelfs wanneer een verzameling wordt gesynchroniseerd, kunnen andere threads de verzameling nog steeds wijzigen, waardoor de enumerator een uitzondering genereert. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de volledige inventarisatie of de uitzonderingen ondervangen die het gevolg zijn van wijzigingen die door andere threads zijn aangebracht.

Het ophalen van de waarde van deze eigenschap is een O(1)-bewerking.

Van toepassing op

Zie ook