ログ行を保存するために ConcurrentDictionary を使用しています。それらをユーザーに表示する必要がある場合はToList()
、リストを生成するために呼び出します。しかし奇妙なことに、一部のユーザーは最新の行をリストの最初に受け取りますが、論理的には最後にあるはずです。
これは、ConcurrentDictionary が IEnumerate インターフェイスでの永続的な順序を保証していないためですか、それともその理由は何ですか?
ログ行を保存するために ConcurrentDictionary を使用しています。それらをユーザーに表示する必要がある場合はToList()
、リストを生成するために呼び出します。しかし奇妙なことに、一部のユーザーは最新の行をリストの最初に受け取りますが、論理的には最後にあるはずです。
これは、ConcurrentDictionary が IEnumerate インターフェイスでの永続的な順序を保証していないためですか、それともその理由は何ですか?
いいえConcurrentDictionary
(さらにDictionary<T>
言えば) リスト内のキーの順序は保証されません。別のデータ型を使用するか、自分で並べ替えを実行する必要があります。非並行コードの場合は を使用しますがSortedDictionary<T>
、並行コレクションに類似物があるとは思いません。
いいえ。ConcurrentDictionary のリストの順序は保証されていません。行は任意の順序で表示されます。