A ordem da lista de um ConcurrentDictionary é garantida?
-
21-12-2019 - |
Pergunta
Estou usando um ConcurrentDictionary para armazenar linhas de log e, quando preciso exibi-las ao usuário, chamo ToList()
para gerar uma lista.Mas o estranho é que alguns usuários recebem as linhas mais recentes primeiro na lista, enquanto deveriam logicamente ser as últimas.
Isso ocorre porque o ConcurrentDictionary não garante uma ordem persistente na interface IEnumerate ou qual pode ser o motivo?
Solução
Não ConcurrentDictionary
(e Dictionary<T>
aliás) não garante a ordem das chaves na lista.Você terá que usar um tipo de dados diferente ou realizar a classificação sozinho.Para código não simultâneo você usaria SortedDictionary<T>
, mas não acredito que exista um análogo nas coleções simultâneas.
Outras dicas
não.A ordem da lista do ConcurrentDictionary não é garantida, as linhas podem sair em qualquer ordem.