ICollection.IsSynchronized Vlastnost

Definice

Načte hodnotu, která označuje, jestli se má synchronizovat přístup k aplikaci (bezpečné pro přístup z ICollection více vláken).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

Hodnota vlastnosti

Boolean

true Pokud je přístup ke službě ICollection synchronizován (bezpečné pro přístup z více vláken), jinak false .true if access to the ICollection is synchronized (thread safe); otherwise, false.

Poznámky

SyncRoot Vrátí objekt, který lze použít k synchronizaci přístupu k ICollection .SyncRoot returns an object, which can be used to synchronize access to the ICollection.

Většina tříd kolekcí v System.Collections oboru názvů také implementuje synchronizovanou metodu, která poskytuje synchronizovanou obálku kolem základní kolekce.Most collection classes in the System.Collections namespace also implement a Synchronized method, which provides a synchronized wrapper around the underlying collection.

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken.Enumerating through a collection is intrinsically not a thread-safe procedure. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.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.

Následující příklad kódu ukazuje, jak uzamknout kolekci pomocí SyncRoot vlastnosti během celého výčtu.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

Platí pro

Viz také