Leggere in inglese

Condividi tramite


Collection<T>.ICollection.SyncRoot Proprietà

Definizione

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

object System.Collections.ICollection.SyncRoot { get; }

Valore della proprietà

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

Implementazioni

Commenti

Le implementazioni predefinite delle raccolte in System.Collections.Generic non vengono 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.

SyncRoot 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.
}

Il recupero del valore di questa proprietà è un'operazione O(1).

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche