Dies ist eine Frage zur Verwendung von Reaktive Erweiterungen (Rx) in einem bestimmten ereignisbezogenen Szenario.
IObservable
, das von beliebigen Clients abonniert werden kann (ohne die Ereignisklassen zu kennen). EventArgs
Was die Rx-Bibliothek zu bieten versucht, sind Möglichkeiten, mit solchen Situationen umzugehen, ohne eine Reihe von Klassen / Methoden erstellen zu müssen, die Observables manuell propagieren.
Nehmen wir an, Sie hatten eine Klasse mit einem Ereignis:
%Vor% Und ein Aufzählungszeichen dieser Instanzen IEnumerable<EventedClass> objects
,
Sie können LINQ verwenden, um Observables aus diesen Klassen zu projizieren, kombinieren Sie sie mit Observable.Merge
, was Ihnen die kombinierte sequentielle Ausgabe dieser Ereignisse liefert.
Es hört sich so an, als ob Sie etwas ähnlich wie diese Frage . Im Grunde genommen möchten Sie ein Thema als Ihre _pool
-Variable verwenden und sich die verschiedenen Ereignisquellen bei Registrieren und Abmelden abonnieren und abmelden lassen. Um die Registrierung einer Quelle aufzuheben, müssen Sie die Verbrauchsmaterialien behalten, die Sie in dem Aufruf zum Registrieren erhalten haben. Außerdem würde ich in Erwägung ziehen, Pooler
direkt IObservable
implementieren und Subscribe
nur an die Variable _pool
weiterleiten.
Beachten Sie, dass Sie IDisposable
implementieren müssen, um sicherzustellen, dass Sie alle Ereignissubskriptionen bereinigen können, wenn Sie mit Pooler
fertig sind.
Tags und Links .net c# event-handling system.reactive