ArrayList.SyncRoot Tulajdonság

Definíció

Lekéri az objektumot, amely a hozzáférés szinkronizálására használható.ArrayList

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

Tulajdonság értéke

Olyan objektum, amely a hozzáférés szinkronizálására használható.ArrayList

Megvalósítás

Példák

Az alábbi példakód bemutatja, hogyan zárolhatja a gyűjteményt a SyncRoot teljes enumerálás során.

ArrayList myCollection = new ArrayList();

lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}
Dim myCollection As New ArrayList()

SyncLock myCollection.SyncRoot
    For Each item As Object In myCollection
        ' Insert your code here.
    Next item
End SyncLock

A tulajdonság értékének beolvasása művelet O(1) .

Megjegyzések

A metódussal szinkronizált verziót ArrayListSynchronized hozhat létre. A származtatott osztályok azonban saját szinkronizált verziót biztosíthatnak a ArrayListSyncRoot tulajdonság használatával. A szinkronizálási kódnak nem közvetlenül a rendszeren, hanem az SyncRootArrayListadott területen kell műveleteket végrehajtania ArrayList. Ez biztosítja a más objektumokból származó gyűjtemények megfelelő működését. Pontosabban fenntartja a megfelelő szinkronizálást más szálakkal, amelyek egyidejűleg módosíthatják az ArrayList objektumot.

A gyűjteményen keresztüli számbavétel alapvetően nem szálbiztos eljárás. A gyűjtemény szinkronizálása esetén is más szálak módosíthatják a gyűjteményt, ami miatt az enumerátor kivételt okoz. Az enumerálás során a szálbiztonság garantálása érdekében zárolhatja a gyűjteményt a teljes enumerálás során, vagy elkaphatja a más szálak által végrehajtott módosításokból eredő kivételeket.

A következőre érvényes:

Lásd még