CollectionBase.ICollection.IsSynchronized Özellik

Tanım

Erişiminin CollectionBase 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 CollectionBase is synchronized (thread safe).

property bool System::Collections::ICollection::IsSynchronized { bool get(); };
bool System.Collections.ICollection.IsSynchronized { get; }
member this.System.Collections.ICollection.IsSynchronized : bool
 ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized

Özellik Değeri

Boolean

true erişimi CollectionBase eşitlendiğinde (iş parçacığı güvenli); Aksi durumda, false .true if access to the CollectionBase is synchronized (thread safe); otherwise, false. Varsayılan değer: false.The default is false.

Uygulamalar

Açıklamalar

CollectionBaseÖrnek eşitlenmemiş.A CollectionBase instance is not synchronized. Türetilmiş sınıflar, özelliği kullanılarak eşitlenmiş bir sürümünü sağlayabilir CollectionBase SyncRoot .Derived classes can provide a synchronized version of the CollectionBase using the SyncRoot property.

Bir koleksiyonun içinden sıralama, bir iş parçacığı güvenli yordamı değil doğası gereği.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, tüm numaralandırma sırasında kullanılarak koleksiyonun nasıl kilitleneceği gösterilmektedir SyncRoot :The following code example shows how to lock the collection using the SyncRoot during the entire enumeration:

// Get the ICollection interface from the CollectionBase
// derived class.
ICollection^ myCollection = myCollectionBase;
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 CollectionBase
// derived class.
ICollection myCollection = myCollectionBase;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Get the ICollection interface from the CollectionBase
' derived class.
Dim myCollection As ICollection = myCollectionBase
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.Retrieving the value of this property is an O(1) operation.

Şunlara uygulanır

Ayrıca bkz.