Как объединить горячие и холодные наблюдаемые одного и того же источника, эффективно избегая дублирования?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как объединить горячие и холодные наблюдаемые одного и того же источника, эффективно избегая дублирования?

Сообщение Anonymous »

У меня есть источник элементов. Его можно запрашивать, и он публикует события при добавлении элементов. Другими словами, я могу сделать «холодное» наблюдаемое на основе результатов запроса, а «горячее» — на основе события.
Один из подходов — объединить «холодное» и «горячее» наблюдение.

Код: Выделить всё

var o = cold.Merge(hot);
Это работает, но может пропустить элементы, если они были излучены между холодными и горячими наблюдаемыми, на которые подписаны.
Итак, другой подход — слияние горячего и холодного.

Код: Выделить всё

var o = hot.Merge(cold);
Это тоже работает и позволяет избежать пропущенных элементов, но приведет к созданию дубликатов, если элементы были созданы из горячего наблюдаемого до того, как на холодный наблюдаемый была подписана.
А как насчет фильтрации нечетких элементов?

Код: Выделить всё

var o = hot.Merge(cold).Distinct()
Это решает проблему, но при этом будет поддерживаться растущий список элементов для проверки на различимость. Мне интересно найти способ добиться такого же поведения, как при использовании Distinct, но без использования все большего и большего объема памяти с течением времени.
Я считаю, что решение выглядит примерно так:Подпишитесь на тему в горячем обозримом. Подпишите холодную наблюдаемую наблюдателю. Приостановите предмет (?), затем воспроизведите предмет наблюдателю, но с проверкой на различимость. Наконец, снимите паузу (или как бы это сработало) с объектом и подпишите его на наблюдателя (без проверки различимости).

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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