ICollection.IsSynchronized Özellik

Tanım

Erişiminin ICollection eşitlenip eşitlenmediğini (iş parçacığı güvenli) gösteren bir değer alır.Gets a value indicating whether access to the ICollection is synchronized (thread safe).

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

Özellik Değeri

Boolean

true erişimi ICollection eşitlendiğinde (iş parçacığı güvenli); Aksi durumda, false .true if access to the ICollection is synchronized (thread safe); otherwise, false.

Açıklamalar

SyncRoot erişimini eşitlemede kullanılabilecek bir nesne döndürür ICollection .SyncRoot returns an object, which can be used to synchronize access to the ICollection.

Ad alanındaki çoğu koleksiyon sınıfı System.Collections Ayrıca, temel alınan koleksiyonun etrafında eşitlenmiş bir sarmalayıcı sağlayan eşitlenmiş bir yöntemi uygular.Most collection classes in the System.Collections namespace also implement a Synchronized method, which provides a synchronized wrapper around the underlying collection.

Bir koleksiyon ile numaralandırma, aslında iş parçacığı açısından güvenli yordam değildir.Enumerating through a collection is intrinsically not a thread-safe procedure. 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.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 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.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Aşağıdaki kod örneği, SyncRoot tüm numaralandırma sırasında özelliğini kullanarak koleksiyonun nasıl kilitleneceği gösterilmektedir.The following code example shows how to lock the collection using the SyncRoot property during the entire enumeration.

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.