Hashtable.SyncRoot Egenskap

Definition

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

public:
 virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public Overridable ReadOnly Property SyncRoot As Object

Egenskapsvärde

Ett objekt som kan användas för att synkronisera åtkomsten Hashtabletill .

Implementeringar

Kommentarer

Om du vill skapa en synkroniserad version av Hashtableanvänder du Synchronized metoden . Härledda klasser kan dock tillhandahålla en egen synkroniserad version av Hashtable egenskapen .SyncRoot Synkroniseringskoden måste utföra åtgärder på SyncRoot , Hashtableinte direkt på Hashtable. 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 Hashtable 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.

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

var myCollection = new Hashtable();
lock (myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As New Hashtable()
SyncLock myCollection.SyncRoot
    For Each item In myCollection
        ' Insert your code here.
    Next
End SyncLock

Gäller för

Se även