ICollection.IsSynchronized Özellik

Tanım

erişimin ICollection eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

public:
 property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean

Özellik Değeri

true erişimi ICollection eşitlenmişse (iş parçacığı güvenli); aksi takdirde , false.

Açıklamalar

SyncRoot , öğesine erişimi ICollectioneşitlemek için kullanılabilecek bir nesne döndürür.

Ad alanında çoğu koleksiyon sınıfı, temel koleksiyonun System.Collections çevresinde eşitlenmiş bir sarmalayıcı sağlayan Eşitlenmiş yöntemi de uygular.

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.

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

ICollection^ myCollection = someCollection;
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);
    }
}
ICollection myCollection = someCollection;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As ICollection = someCollection
SyncLock myCollection.SyncRoot
    For Each item In myCollection
        ' Insert your code here.
    Next item
End SyncLock

Şunlara uygulanır

Ayrıca bkz.