CollectionBase.ICollection.IsSynchronized Egenskap

Definition

Hämtar ett värde som anger om åtkomsten CollectionBase till är synkroniserad (trådsäker).

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

Egenskapsvärde

trueom åtkomsten CollectionBase till är synkroniserad (trådsäker), annars . false Standardvärdet är false.

Implementeringar

Kommentarer

En CollectionBase instans synkroniseras inte. Härledda klasser kan tillhandahålla en synkroniserad version av egenskapen med hjälp av CollectionBase egenskapen SyncRoot .

Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.

Följande kodexempel visar hur du låser samlingen med hela SyncRoot uppräkningen:

// 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

Att hämta värdet för den här egenskapen är en O(1) åtgärd.

Gäller för

Se även