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.Specialized