Dispatcher Scheduler - Rx

时间:2013-09-23 10:09:30

标签: c# system.reactive

我们正在使用.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

3 个答案:

答案 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