I am using a ConcurrentDictionary to store log-lines, and when I need to display them to the user I call ToList()
to generate a list. But the weird thing is that some users receive the most recent lines first in the list, while they should logically be last.
Is this because ConcurrentDictionary doesnt guarantee a persistent order on the IEnumerate interface, or what can be the reason?
No. The list order of ConcurrentDictionary is NOT guaranteed, lines can come out in any order.
No
ConcurrentDictionary
(andDictionary<T>
for that matter) does not guarantee the ordering of the keys in the list. You'll have to use a different data type or perform the sorting yourself. For non-concurrent code you would useSortedDictionary<T>
, but I don't believe there is an analogue in the concurrent collections.