Можно ли использовать ReactiveExtensions для достижения следующих результатов:
-
Два наблюдаемых, один из которых является "высоким" приоритетом, а другой "низкий"
-
Объединяя оба Observables в один, который затем может быть подписан, с намерением, чтобы этот результат Observable всегда выделял высокоприоритетные элементы перед любыми низкоприоритетными.
Я понимаю, что это может быть тривиально реализовано с использованием двух коллекций ConcurrentQueue
и что-то вроде этого:
return this.highPriorityItems.TryDequeue(out item)
|| this.lowPriorityItems.TryDequeue(out item);
Но этот подход имеет такие проблемы, как не "подписываться" таким же образом, что и Observable (поэтому, когда очереди будут исчерпаны, обработка завершится без большого количества лишнего guff, чтобы отбросить это в Задачу).
Кроме того, мне было бы интересно применить некоторую дополнительную фильтрацию в очередях, например, дросселирование и "отличную до изменения", поэтому Rx выглядит естественным образом.