Dictionary<TKey,TValue>.ICollection.SyncRoot Dictionary<TKey,TValue>.ICollection.SyncRoot Dictionary<TKey,TValue>.ICollection.SyncRoot Property

Definizione

Ottiene un oggetto che può essere usato per sincronizzare l'accesso a ICollection.Gets an object that can be used to synchronize access to the ICollection.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

Valore della proprietà

Oggetto che può essere usato per sincronizzare l'accesso a ICollection.An object that can be used to synchronize access to the ICollection.

Implementazioni

Commenti

Le implementazioni predefinite di raccolte nello spazio dei nomi System.Collections.Generic non sono sincronizzate.Default implementations of collections in the System.Collections.Generic namespace are not synchronized.

L'enumerazione di una raccolta non è di per sé una procedura thread-safe.Enumerating through a collection is intrinsically not a thread-safe procedure. Per assicurare la protezione del thread durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. Per consentire l'accesso alla raccolta in lettura e scrittura da parte di più thread, è necessario implementare la propria sincronizzazione.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

Il SyncRoot proprietà restituisce un oggetto che può essere utilizzato per sincronizzare l'accesso al ICollection.The SyncRoot property returns an object that can be used to synchronize access to the ICollection. La sincronizzazione è efficace solo se tutti i thread di bloccano l'oggetto prima di accedere alla raccolta.Synchronization is effective only if all threads lock the object before accessing the collection. Il codice seguente viene illustrato come utilizzare il SyncRoot proprietà c#, C++ e Visual Basic.The following code shows the use of the SyncRoot property for C#, C++, and 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).Getting the value of this property is an O(1) operation.

Si applica a

Vedi anche