Aracılığıyla paylaş


NameObjectCollectionBase.ICollection.SyncRoot Özellik

Tanım

Nesneye erişimi NameObjectCollectionBase eşitlemek için kullanılabilecek bir nesne alır.

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

Özellik Değeri

Nesneye erişimi eşitlemek için NameObjectCollectionBase kullanılabilecek bir nesne.

Uygulamalar

Açıklamalar

Türetilmiş sınıflar, özelliğini kullanarak SyncRoot sınıfın NameObjectCollectionBase kendi eşitlenmiş sürümünü sağlayabilir. Eşitleme kodu, doğrudan nesne üzerinde SyncRoot değil nesnenin NameObjectCollectionBase özelliği üzerinde NameObjectCollectionBase işlemler gerç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 NameObjectCollectionBase 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.

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

// Create a collection derived from NameObjectCollectionBase
ICollection myCollection = new DerivedCollection();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Create a collection derived from NameObjectCollectionBase
Dim myCollection As ICollection = New DerivedCollection()
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.

Şunlara uygulanır

Ayrıca bkz.