Array.SyncRoot Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar ett objekt som kan användas för att synkronisera åtkomsten Arraytill .
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public:
virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Public Overridable ReadOnly Property SyncRoot As Object
Egenskapsvärde
Ett objekt som kan användas för att synkronisera åtkomsten Arraytill .
Implementeringar
Exempel
I följande kodexempel visas hur du låser en matris under hela uppräkningen med hjälp SyncRoot av egenskapen .
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
Kommentarer
Den här egenskapen implementerar System.Collections.ICollection gränssnittet.
.NET klasser baserat på Array ange en egen synkroniserad version av samlingen med egenskapen SyncRoot.
Klasser som använder matriser kan också implementera sin egen synkronisering med hjälp av SyncRoot egenskapen . Synkroniseringskoden måste utföra åtgärder på SyncRoot samlingen, inte direkt i samlingen. Detta säkerställer korrekt drift av samlingar som härleds från andra objekt. Mer specifikt upprätthåller den korrekt synkronisering med andra trådar som kan ändra samlingen samtidigt. Observera att vissa implementeringar av SyncRoot kan returnera Array sig själv.
Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.
Att hämta värdet för den här egenskapen är en O(1)-åtgärd.