Compartilhar via


Dictionary<TKey,TValue>.ValueCollection.ICollection.SyncRoot Propriedade

Definição

Obtém um objeto que pode ser usado para sincronizar o acesso ao 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

Valor da propriedade

Um objeto que pode ser usado para sincronizar o ICollectionacesso ao . Na implementação padrão de Dictionary<TKey,TValue>.ValueCollection, essa propriedade sempre retorna a instância atual.

Implementações

Comentários

As implementações padrão de coleções em System.Collections.Generic não são sincronizadas.

Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração. Para permitir que a coleção seja acessada por vários threads para leitura e gravação, você deve implementar sua própria sincronização.

SyncRoot retorna um objeto, que pode ser usado para sincronizar o ICollectionacesso ao . A sincronização só será eficaz se todos os threads bloquearem esse objeto antes de acessar a coleção. O código a seguir mostra o uso da SyncRoot propriedade.

ICollection ic = ...;
lock (ic.SyncRoot) {
   // Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
   ' Access the collection.
End SyncLock

Recuperar o valor dessa propriedade é uma operação O(1).

Aplica-se a

Confira também