NameObjectCollectionBase.KeysCollection.ICollection.IsSynchronized Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar ett värde som anger om åtkomsten NameObjectCollectionBase.KeysCollection 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 NameObjectCollectionBase.KeysCollection till är synkroniserad (trådsäker), annars . false Standardvärdet är false.
Implementeringar
Exempel
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
NameObjectCollectionBase myBaseCollection = new DerivedCollection();
// Get the ICollection from NameObjectCollectionBase.KeysCollection
ICollection myKeysCollection = myBaseCollection.Keys;
lock(myKeysCollection.SyncRoot)
{
foreach (object item in myKeysCollection)
{
// Insert your code here.
}
}
' Create a collection derived from NameObjectCollectionBase
Dim myBaseCollection As NameObjectCollectionBase = New DerivedCollection()
' Get the ICollection from NameObjectCollectionBase.KeysCollection
Dim myKeysCollection As ICollection = myBaseCollection.Keys
SyncLock myKeysCollection.SyncRoot
For Each item As Object In myKeysCollection
' 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.
Kommentarer
Härledda klasser kan tillhandahålla en egen synkroniserad version av egenskapen med hjälp SyncRoot av NameObjectCollectionBase.KeysCollection egenskapen . Synkroniseringskoden måste utföra åtgärder på SyncRoot , NameObjectCollectionBase.KeysCollectioninte direkt på NameObjectCollectionBase.KeysCollection. 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.KeysCollection 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.