7

我们正在使用 .NET 3.5 并已开始使用 Reactive Extensions。我们正在使用与 .NET 3.5 兼容的 system.Reactive(运行时版本:v2.0.50727)。

我正在尝试观察调度程序调度程序上的一个事件,因为我使用的是 WPF 控件(它是 winforms shell,嵌入了 WPF 主机控件),但是我无法在调度程序类(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);

谢谢,

-麦克风

4

3 回答 3

9

更新:基于 Rx 2.2.4.0
的 WPF DispatcherScheduler 目前已移至 System.Reactive.Windows.Threading 命名空间。
使用 Nuget 包,搜索 Rx-WPF 以下载包并使用 DispatcherScheduler.Current 代替 Scheduler.Dispatcher

于 2014-07-22T14:59:57.820 回答
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);
于 2013-09-24T06:29:33.460 回答
3

我认为您应该能够使用 DispatcherScheduler.Current

于 2013-09-23T10:26:10.163 回答