Aracılığıyla paylaş


Array.SyncRoot Özellik

Tanım

erişimi Arrayeşitlemek için kullanılabilecek bir nesnesi alır.

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

Özellik Değeri

erişimi Arrayeşitlemek için kullanılabilecek bir nesne.

Uygulamalar

Örnekler

Aşağıdaki kod örneği, özelliğini kullanarak tüm numaralandırma sırasında bir diziyi kilitlemeyi SyncRoot gösterir.

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

Açıklamalar

Bu özellik arabirimini System.Collections.ICollection uygular.

tabanlı Array .NET sınıfları, özelliğini kullanarak SyncRoot koleksiyonun kendi eşitlenmiş sürümlerini sağlar.

Dizileri kullanan sınıflar, özelliğini kullanarak SyncRoot kendi eşitlemelerini de uygulayabilir. Eşitleme kodu, doğrudan koleksiyon üzerinde SyncRoot değil, koleksiyonun üzerinde işlemler gerçekleştirmelidir. Bu, diğer nesnelerden türetilen toplulukların düzgün çalışmasını sağlar. Özellikle, koleksiyonu aynı anda değiştirebilecek diğer iş parçacıklarıyla düzgün eşitlemeyi sürdürür. bazı uygulamalarının SyncRoot kendisini döndürebileceğini Array unutmayın.

Bir koleksiyonda numaralandırmak, doğası gereği iş parçacığı güvenli bir yordam değildir. Bir koleksiyon eşitlendiği zaman bile, diğer iş parçacıkları numaralandırıcının özel durum oluşturmasına neden olan koleksiyonu değiştirebilir. Numaralandırma sırasında iş parçacığı güvenliği sağlamak için tüm numaralandırma sırasında koleksiyonu kilitleyebilir veya diğer iş parçacıkları tarafından yapılan değişikliklerden kaynaklanan özel durumları yakalayabilirsiniz.

Bu özelliğin değerini almak bir O(1) işlemidir.

Şunlara uygulanır

Ayrıca bkz.