Aracılığıyla paylaş


ListDictionary.SyncRoot Özellik

Tanım

ListDictionaryerişimini eşitlemek için kullanılabilecek bir nesnesi alır.

public:
 property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object

Özellik Değeri

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

Uygulamalar

Örnekler

Aşağıdaki kod örneği, tüm numaralandırma sırasında kullanarak SyncRoot koleksiyonun nasıl kilitlenmesini gösterir.

ListDictionary myCollection = new ListDictionary();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As New ListDictionary()
SyncLock myCollection.SyncRoot
    For Each item as Object In myCollection
        ' Insert your code here.
    Next item
End SyncLock

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

Açıklamalar

Türetilmiş sınıflar özelliğini kullanarak SyncRoot kendi eşitlenmiş sürümünü ListDictionary sağlayabilir. Eşitleme kodu üzerinde doğrudan ListDictionaryüzerinde değil üzerinde işlem SyncRootListDictionarygerçekleştirmelidir. Bu, diğer nesnelerden türetilen koleksiyonların düzgün çalışmasını sağlar. Özellikle, nesneyi aynı anda değiştirebilecek diğer iş parçacıklarıyla düzgün eşitlemeyi ListDictionary korur.

Bir koleksiyonda numaralandırma, iş parçacığı açısından güvenli bir yordam değildir. Bir koleksiyon eşitlendiğinde bile, diğer iş parçacıkları yine de koleksiyonu değiştirebilir ve bu da numaralandırıcının bir özel durum oluşturmasına neden olur. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek 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.

Şunlara uygulanır

Ayrıca bkz.