Observable.Delay вызов Dispose до запуска OnNext - PullRequest
2 голосов
/ 20 октября 2010

У меня проблемы с пониманием того, как работает Observable.Delay и когда должен вызываться Dispose ().Может ли кто-нибудь, знакомый с Rx, помочь?1УТИЛИЗИРОВАТЬУТИЛИЗИРОВАТЬУТИЛИЗИРОВАТЬ... 0 ...... 1 ......... ...... 0...... ...... 1

Я ожидал, что это будет больше похоже на:

01УТИЛИЗИРОВАТЬ... 0 ...... 1 ...УТИЛИЗИРОВАТЬ...... ...... 0...... ...... 1УТИЛИЗИРОВАТЬ

Есть идеи ??

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Стандартная функциональность Rx заключается в удалении подписки после завершения последовательности (даже если ее значения по-прежнему передаются через другую последовательность).

С учетом этого Delay не может контролировать скоростьЗначения, передаваемые из исходной последовательности, могут задерживать значения только для собственных наблюдателей.

0 голосов
/ 21 октября 2010

Если бы мне пришлось угадывать, я бы сказал, что Задержка ставит в очередь элементы, поступающие из исходной наблюдаемой, а затем распределяет их по своему усмотрению на основе указанной задержки.Таким образом, хотя исходная наблюдаемая уже давно уничтожена, наблюдаемая, созданная методом задержки, все еще жива и здорова.Наблюдаемое вами поведение прекрасно вписывается в это объяснение.

0 голосов
/ 20 октября 2010

Без ThreadPool поведение идентично:

0 1 УТИЛИЗИРОВАТЬ УТИЛИЗИРОВАТЬ ... 0 ... ... 1 ... ...... ...... 0 ...... 1 ......

...