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 ConcurrentDictionary
(and Dictionary<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 use SortedDictionary<T>
, but I don't believe there is an analogue in the concurrent collections.
No. The list order of ConcurrentDictionary is NOT guaranteed, lines can come out in any order.
来源:https://stackoverflow.com/questions/20020074/is-the-list-order-of-a-concurrentdictionary-guaranteed