Ho una classe che sarà responsabile della generazione di eventi in un intervallo frequente ma irregolare, che le altre classi devono consumare e operare. Voglio usare Reactive Extensions per questa attività.Come si spinge un'entità su un Rx Observable?
Il lato consumer di questo è molto semplice; Ho la mia classe di consumatori che implementa lo IObserver<Payload>
e tutto sembra a posto. Il problema arriva nella classe dei produttori.
Implementazione IObservable<Payload>
direttamente (cioè, mettendo il mio propria implementazione per IDisposable Subscribe(IObserver<Payload>)
è, secondo la documentazione, non è raccomandato. Suggerisce invece comporre con la Observable.Create()
insieme di funzioni. Dal momento che la mia classe verrà eseguito per molto tempo, I' ve provato a generare un 'osservabile con var myObservable = Observable.Never()
, e poi, quando mi arrivano nuovi Payloads disponibili, chiamando myObservable.Publish(payloadData)
. quando faccio questo, però, non mi sembra di colpire l'attuazione OnNext
nel mio consumo.
credo, come un work-around, posso creare un evento nella mia classe e quindi creare l'Observable usando la funzione FromEvent
, ma questo sembra un co troppo approccio complicato (cioè, sembra strano che la nuova hotness di Observables "richieda" che gli eventi funzionino). C'è un approccio semplice che sto trascurando qui? Qual è il modo "standard" per creare le tue fonti osservabili?
Come regola generale, se ti trovi a implementare "IObservable" o "IObserver ", probabilmente stai facendo qualcosa di sbagliato. –
Enigmativity