Array.SyncRoot Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera obiekt, który może służyć do synchronizowania dostępu do obiektu Array.
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
Wartość właściwości
Obiekt, który może służyć do synchronizowania dostępu do obiektu Array.
Implementuje
Przykłady
W poniższym przykładzie kodu pokazano, jak zablokować tablicę podczas całego wyliczenia przy użyciu SyncRoot właściwości .
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
Uwagi
Ta właściwość implementuje System.Collections.ICollection interfejs.
Klasy platformy .NET oparte na Array udostępnieniu własnej zsynchronizowanej wersji kolekcji przy użyciu SyncRoot właściwości .
Klasy korzystające z tablic mogą również implementować własną synchronizację SyncRoot przy użyciu właściwości . Synchronizowanie kodu musi wykonywać operacje na SyncRoot
kolekcji, a nie bezpośrednio w kolekcji. Gwarantuje to prawidłowe funkcjonowanie kolekcji, które są uzyskiwane z innych obiektów. W szczególności utrzymuje właściwą synchronizację z innymi wątkami, które mogą być jednocześnie modyfikowane w kolekcji. Należy pamiętać, że niektóre implementacje SyncRoot programu mogą zwrócić Array samą siebie.
Wyliczanie przez kolekcję nie jest wewnętrznie bezpieczną procedurą wątku. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.
Pobieranie wartości tej właściwości jest operacją O(1).