Sto cercando di implementare un semplice pattern Observer utilizzando la classe .net Observable
. Ho codice che assomiglia a questo:.net Osservabile "ObserveOn" a thread di sfondo
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));
Voglio gli osservatori per l'esecuzione su un thread in background, ma li voglio tutti corrono sullo stesso thread in background (per la nostra implementazione reale, sarà troppo complicato avere ogni ascoltatore su un thread diverso).
cioè voglio tutta la OnXXXChanged
logica da eseguire su un thread diverso dal thread UI, ma invece di Observing
sull'intero threadpool, voglio assicurarsi che vengano eseguite nell'ordine corretto, sullo stesso filo.
Come deve essere modificato quanto sopra?
Inoltre, su una nota in qualche modo correlata, esistono esempi di codice di esempio validi che utilizzano la classe Observable
per implementare questo modello?
Grande, grazie mille! – user981225
EventLoopScheduler implementa IDisposable in modo da essere responsabile della sua eliminazione. È possibile utilizzare il metodo Using osservable factory per collegare la durata all'abbonamento. – Fredrick
Scheduler.NewThread è deprecato adesso, dovresti usare NewThreadScheduler.Default. – Kreshnik