NameObjectCollectionBase.ICollection.SyncRoot Egenskap

Definition

Hämtar ett objekt som kan användas för att synkronisera åtkomsten NameObjectCollectionBase till objektet.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

Egenskapsvärde

Ett objekt som kan användas för att synkronisera åtkomsten NameObjectCollectionBase till objektet.

Implementeringar

Kommentarer

Härledda klasser kan tillhandahålla en egen synkroniserad version av klassen med hjälp av NameObjectCollectionBaseSyncRoot egenskapen . Synkroniseringskoden måste utföra åtgärder på SyncRoot objektets NameObjectCollectionBase egenskap, inte direkt på NameObjectCollectionBase objektet. Detta säkerställer korrekt drift av samlingar som härleds från andra objekt. Mer specifikt upprätthåller den korrekt synkronisering med andra trådar som kan ändra NameObjectCollectionBase objektet samtidigt.

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.

I följande kodexempel visas hur du låser samlingen med hjälp av SyncRoot under hela uppräkningen.

// Create a collection derived from NameObjectCollectionBase
ICollection myCollection = new DerivedCollection();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
' Create a collection derived from NameObjectCollectionBase
Dim myCollection As ICollection = New DerivedCollection()
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