Queue.SyncRoot Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri az objektumot, amely a hozzáférés szinkronizálására használható.Queue
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ó.Queue
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. A tulajdonság értékének beolvasása művelet O(1) .
Queue myCollection = new Queue();
lock (myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New Queue()
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock
Megjegyzések
A metódussal szinkronizált verziót QueueSynchronized hozhat létre. A származtatott osztályok azonban saját szinkronizált verziót biztosíthatnak a QueueSyncRoot tulajdonság használatával. A szinkronizálási kódnak nem közvetlenül a rendszeren, hanem az SyncRootQueueadott területen kell műveleteket végrehajtania Queue. 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 Queue 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.