Array.IsSynchronized Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.