Mam klasę, która będzie odpowiedzialna za generowanie zdarzeń w częstych, ale nieregularnych odstępach czasu, które inne klasy muszą spożywać i obsługiwać. Chcę użyć Reactive Extensions do wykonania tego zadania.Jak wypchnąć obiekt na Rx Obserwowalny?
Strona konsumenta tego jest bardzo prosta; Mam swoją klasę konsumencką implementującą IObserver<Payload>
i wszystko wydaje się dobrze. Problem pojawia się w klasie producenta.
Wdrażanie IObservable<Payload>
bezpośrednio (czyli oddanie własną implementację dla IDisposable Subscribe(IObserver<Payload>)
jest, zgodnie z dokumentacją, nie jest zalecane. To sugeruje zamiast komponować z Observable.Create()
zestaw funkcji. Ponieważ moja klasa będzie działać przez długi czas, I” Wcześniej próbował tworzenia obserwowanej z var myObservable = Observable.Never()
, a potem, kiedy mam nowe Bloki danych dostępne, nazywając myObservable.Publish(payloadData)
. kiedy to zrobić, choć ja nie wydają się trafić realizację OnNext
w moim konsumenta.
myślę, jak obejście, mogę utworzyć wydarzenie w mojej klasie, a następnie utworzyć obserwowalne za pomocą funkcji FromEvent
, ale wydaje się, że jest to zbyt mplicated podejście (tj. wydaje się dziwne, że nowa gorliwość Observables "wymaga" zdarzeń do działania). Czy istnieje tu proste podejście, które tu widzę? Jaki jest "standardowy" sposób tworzenia własnych obserwowalnych źródeł?
Zasadniczo, jeśli implementujesz 'IObservable' lub 'IObserver ', prawdopodobnie robisz coś źle. –
Enigmativity