我们正在使用.NET 3.5并已开始使用Reactive Extensions。我们正在使用system.Reactive(运行时版本:v2.0.50727),它与.NET 3.5兼容。
我正在尝试观察调度程序调度程序上的事件,因为我正在使用WPF控件(它是winforms shell,嵌入了WPF主机控件),但是我无法在Scheduler类上看到该选项(system.reactive.concurrency) .scheduler)。看起来它可以从.NET 4.0开始提供。我的问题是,如何在.NET 3.5中使用它?请注意,调用发生在我的ViewModel中,而不是View。
代码:
this.ObservePropertyChanged(x => x.Queue)
//I cant find scheduler dispatcher option,
//there are other options such as current, imeediete, new etc.
.ObserveOn(Scheduler.Dispatcher)
.Subscribe(RefreshQueues);
谢谢,
-Mike
答案 0 :(得分:9)
更新:基于Rx 2.2.4.0
用于WPF的DispatcherScheduler当前已移至System.Reactive.Windows.Threading命名空间。
使用Nuget包,搜索Rx-WPF以下载包并使用DispatcherScheduler.Current代替Scheduler.Dispatcher
答案 1 :(得分:5)
您应该可以使用http://www.nuget.org/packages/Rx-WinForms/
中的RX Winforms扩展库this.ObservePropertyChanged(x => x.Queue)
.ObserveOn(control);
或者你已经使用了正确的帖子。
this.ObservePropertyChanged(x => x.Queue)
.ObserveOn(SynchronizationContext.Current);
答案 2 :(得分:1)
我认为您应该可以使用DispatcherScheduler.Current