Я пытаюсь реализовать простой шаблон Observer, используя .net Observable
класс. У меня есть код, который выглядит следующим образом:.net Наблюдаемый 'ObserveOn' фоновый поток
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));
Я хочу наблюдателей работать на фоне потока, но я хочу их всех работать на одной и той же фоновый поток (для нашей реальной реализации, это будет слишком сложно иметь каждого слушателя в другом потоке).
т.е. я хочу все OnXXXChanged
логики должны выполняться в потоке, отличном от потока пользовательского интерфейса, но вместо Observing
по всей ThreadPool, я хочу, чтобы убедиться, что они работают в правильном порядке, в том же потоке.
Как следует изменить вышеуказанное?
Кроме того, в некоторой смежной заметке есть ли примеры хорошего примера кода с использованием класса Observable
для реализации этого шаблона?
Отлично, спасибо большое! – user981225
EventLoopScheduler реализует IDisposable, поэтому вы будете нести ответственность за его удаление. Вы можете использовать метод «Использовать наблюдаемый фабрика» для привязки времени жизни к подписке. – Fredrick
Scheduler.NewThread устарел сейчас, вместо этого следует использовать NewThreadScheduler.Default. – Kreshnik