Condividi tramite


SortedDictionary<TKey,TValue>.ValueCollection.ICollection.SyncRoot Proprietà

Definizione

Ottiene un oggetto che può essere usato per sincronizzare l'accesso a ICollection.

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

Valore della proprietà

Oggetto che può essere utilizzato per sincronizzare l'accesso a ICollection. Nell'implementazione predefinita di SortedDictionary<TKey,TValue>.ValueCollection, questa proprietà restituisce sempre l'istanza corrente.

Implementazioni

Commenti

Le implementazioni predefinite di raccolte nello spazio dei nomi System.Collections.Generic non sono sincronizzate.

L'enumerazione di una raccolta non è di per sé una procedura thread-safe. Per assicurare la protezione del thread durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta in lettura e scrittura da parte di più thread, è necessario implementare la propria sincronizzazione.

La SyncRoot proprietà restituisce un oggetto che può essere utilizzato per sincronizzare l'accesso ICollectiona . La sincronizzazione è valida solo se tutti i thread bloccano l'oggetto prima di accedere alla raccolta. Il codice seguente illustra l'uso della SyncRoot proprietà per C#, C++e Visual Basic.

ICollection ic = ...;  
lock (ic.SyncRoot)   
{  
    // Access the collection.  
}  
Dim ic As ICollection = ...  
SyncLock ic.SyncRoot  
    ' Access the collection.  
End SyncLock  
ICollection^ ic = ...;  
try   
{  
    Monitor::Enter(ic->SyncRoot);  
    // Access the collection.  
}  
finally   
{  
    Monitor::Exit(ic->SyncRoot);  
}  

Ottenere il valore di questa proprietà è un'operazione O(1).

Si applica a

Vedi anche