Estoy tratando de implementar un patrón de Observer simple usando la clase .net Observable
. Tengo el código que se parece a esto:.net Observable 'ObserveOn' un hilo de fondo
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "FirstName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnFirstNameChanged(search.EventArgs));
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "LastName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnLastNameChanged(search.EventArgs));
Quiero que los observadores se ejecuten en un subproceso de fondo, pero yo los quiero a todos corren en el mismo hilo de fondo (para nuestra implementación real, será demasiado complicado tener a cada oyente en un hilo diferente).
es decir, quiero toda la lógica OnXXXChanged
a llevarse a cabo en un subproceso distinto del subproceso de interfaz de usuario, pero en lugar de Observing
en todo el conjunto de subprocesos, quiero para asegurarse de que se ejecutan en el orden correcto, en el mismo hilo.
¿Cómo se debe modificar lo anterior?
Además, en una nota algo relacionada, ¿hay algún buen ejemplo de código de muestra utilizando la clase Observable
para implementar este patrón?
Genial, muchas gracias! – user981225
EventLoopScheduler implementa IDisposable, por lo que será responsable de deshacerse de él. Puede utilizar el método de fábrica observable utilizando para vincular el tiempo de vida a la suscripción. – Fredrick
Scheduler.NewThread está en desuso en este momento, en su lugar debería usar NewThreadScheduler.Default. – Kreshnik