Вызов ToList () на concurrentDictionary , добавляя элементыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Вызов ToList () на concurrentDictionary , добавляя элементы

Сообщение Anonymous »

Я столкнулся с интересной проблемой. Зная, что concurrentdictionary безопасно перечисляется во время изменения, при этом (в моем случае) нежелательный побочный эффект итерации над элементами, которые могут исчезнуть или появляться несколько раз, я решил создать снимки сам, используя Tolist () . Поскольку COMPURRENTDICTIONARY также реализует ICOLLECTION , это вызывает список (Ienumerable Collection) для использования, что, в свою очередь, создает массив в текущем размере, используя текущий счет Icollection .copyto (t [] array, int arrayindex) , призыв к своей реализации comprourentdictionary и, наконец, выбросить аргумент Exception , если элементы добавлены в словарь, в то же время. Продолжайте ловить исключение и повторно (что определенно не является правильным ответом на проблему), или для реализации моей собственной версии Tolist () < /code>, специализированной на эту проблему (но опять же, простое увеличение списка, затем, возможно, обрезка его подходящего размера для нескольких элементов кажется переизбытком, и использование LinkedList снижает производительность, так что в зависимости от того, что в зависимости от того, что в зависимости от того, что в зависимости от того, что в зависимости от того, что в зависимости от того, что в зависимости от того, что в зависимости от того, что вы можете снизить показатели, то, что будет снижать показатели, то есть. буфера в фоновом режиме (например, OrderBy < /code>), похоже, решает проблему за счет производительности, но Bare Tolist () < /code>, очевидно, нет, и он не стоит «увеличить» с другим методом, когда не требуется дополнительная функциональность. Обходной путь, чтобы поддерживать минимум производительности при создании такого снимка? (Предпочтительно в конце некоторой магии LINQ.) < /P>

edit: < /strong> < /p>

После изучения его я могу подтвердить, toarray () < /code> (чтобы думать, что я только что прошел вчера). Снимок (например, фильтрация, сортировка) и список/массив все еще необходим в конце. (В этом случае требуется дополнительный вызов, создающий новую коллекцию снова и снова.) < /P>

Я не смог отметить, что снимок может или не может пройти через эти модификации, поэтому его следует принять в конце, предпочтительно, поэтому я добавлю это к вопросам.

Подробнее здесь: https://stackoverflow.com/questions/410 ... ding-items
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ConcurrentDictionary — Как эффективно «получить N элементов, начиная с ключа K»?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • ILookup и IGrouping
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Словарь и изменяемые ключи
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как работает процесс хеширования в Dictionary?
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Словарь против List против (T1, T2) [] [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»