ReadOnlyCollectionBase.ICollection.SyncRoot Özellik

Tanım

Bir nesneye erişimi eşitlemek için kullanılabilecek bir ReadOnlyCollectionBase 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 ReadOnlyCollectionBase eşitlemek için kullanılabilecek bir nesne.

Uygulamalar

Örnekler

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

// Get the ICollection interface from the ReadOnlyCollectionBase
// derived class.
ICollection^ myCollection = myReadOnlyCollection;
bool lockTaken = false;
try
{
    Monitor::Enter(myCollection->SyncRoot, lockTaken);
    for each (Object^ item in myCollection);
    {
        // Insert your code here.
    }
}
finally
{
    if (lockTaken)
    {
        Monitor::Exit(myCollection->SyncRoot);
    }
}
// Get the ICollection interface from the ReadOnlyCollectionBase
// derived class.
ICollection myCollection = myReadOnlyCollection;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Get the ICollection interface from the ReadOnlyCollectionBase
' derived class.
Dim myCollection As ICollection = myReadOnlyCollection
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şlemdir.

Açıklamalar

Türetilmiş sınıflar, özelliğini kullanarak SyncRoot sınıfın ReadOnlyCollectionBase kendi eşitlenmiş sürümlerini sağlayabilir. Eşitleme kodu, doğrudan nesne üzerinde SyncRoot değil, nesnenin ReadOnlyCollectionBase özelliği üzerinde ReadOnlyCollectionBase işlemler gerçekleştirmelidir. Bu, diğer nesnelerden türetilen toplulukları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 ReadOnlyCollectionBase sürdürür.

Bir koleksiyon ile numaralandırma, aslında iş parçacığı açısından güvenli 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.

Şunlara uygulanır

Ayrıca bkz.