Bagikan melalui


Array.SyncRoot Properti

Definisi

Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke 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

Nilai Properti

Objek yang dapat digunakan untuk menyinkronkan akses ke Array.

Penerapan

Contoh

Contoh kode berikut menunjukkan cara mengunci array selama seluruh enumerasi dengan menggunakan SyncRoot properti .

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

Keterangan

Properti ini mengimplementasikan System.Collections.ICollection antarmuka.

Kelas .NET berdasarkan menyediakan versi koleksi yang disinkronkan Array sendiri menggunakan SyncRoot properti .

Kelas yang menggunakan array juga dapat menerapkan sinkronisasi mereka sendiri menggunakan SyncRoot properti . Kode sinkronisasi harus melakukan operasi pada SyncRoot koleksi, bukan langsung pada koleksi. Ini memastikan pengoperasian koleksi yang tepat yang berasal dari objek lain. Secara khusus, ini mempertahankan sinkronisasi yang tepat dengan utas lain yang mungkin secara bersamaan memodifikasi koleksi. Perhatikan bahwa beberapa implementasi SyncRoot mungkin mengembalikan dirinya Array sendiri.

Menghitung melalui koleksi secara intrinsik bukan prosedur aman utas. Bahkan ketika koleksi disinkronkan, utas lain masih dapat memodifikasi koleksi, yang menyebabkan enumerator melemparkan pengecualian. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi atau menangkap pengecualian yang dihasilkan dari perubahan yang dibuat oleh utas lain.

Mengambil nilai properti ini adalah operasi O(1).

Berlaku untuk

Lihat juga