我试图实现一个简单的观察者模式使用.net Observable
类。我有一些代码,看起来像这样:.net Observable'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
逻辑在除了UI线程之外的线程上执行,而不是整个线程池上的Observing
,我想确保它们在同一线程上以正确的顺序运行。
以上应如何修改?
另外,在某种程度上相关的说明中,是否有任何使用Observable
类实现此模式的良好示例代码示例?
太好了,非常感谢! – user981225
EventLoopScheduler实现IDisposable,因此您将负责处理它。您可以使用Using observable factory方法将生命周期与订阅绑定。 – Fredrick
Scheduler.NewThread目前已被弃用,您应该改用NewThreadScheduler.Default。 – Kreshnik