Compartilhar via


Coleções e Sincronização (Segurança de Segmentos)

Por padrão, as classes em System.Collections e namespaces relacionados não tem segurança de segmentos.Vários leitores podem ler a coleção com confiança; no entanto, qualquer modificação feita à coleção produz resultados indefinidos para todos os segmentos que acessam a coleção, incluindo os segmentos do leitor.

Classes System.Collections podem ser feitas com segurança de segmento usando qualquer um dos seguintes métodos:

  • Crie um invólucro com segurança de segmentos usando o método Synchronized e acesse a coleção exclusivamente por meio desse conteúdo adicional.

  • Se a classe não tem um método Synchronized, derive da classe e implemente um método Synchronized que usa a propriedade SyncRoot.

  • Use um mecanismo de bloqueio, como a instrução LOCK em C# ( SyncLock em Visual Basic, a classe Monitor no C++), na propriedade SyncRoot ao acessar a coleção.

Ao implementar o método Synchronized, classes derivadas devem substituir a propriedade IsReadOnly para retornar o valor correto.

A classe Array não inclui um método Synchronized e, embora ele tenha uma propriedade SyncRoot, a classe não pode ser derivada de.Portanto, uma matriz pode ser feita com segurança de segmentos somente pelo mecanismo de bloqueio.

Classes de coleção genérica não incluem membros de sincronização; no entanto, alguns classes genéricas, como Collection<T>, Dictionary<TKey, TValue> e List<T>, implementam explicitamente membros de sincronização herdados da interface não genérica ICollection.

Consulte também

Referência

System.Collections

System.Collections.Specialized

System.Collections.Generic

Outros recursos

Criando e Manipulando Coleções