Basically, I think the answer comes down to how are you going to use the results. If you want to process them using TPL Dataflow, return ISourceBlock<T>
. If you're going to process them using Rx, use IObservable<T>
.
If you don't know, I think it's better to return ISourceBlock<T>
, because it can be easily converted to IObservable<T>
.