C# 调度器调度器-Rx
我们正在使用.NET3.5,并且已经开始使用反应式扩展。我们正在使用system.Reactive(运行时版本:v2.0.50727),它与.NET3.5兼容 由于我使用WPF控件(它是winforms shell,嵌入了WPF主机控件),所以我试图在调度程序类(system.Responsive.concurrency.scheduler)上观察一个事件,但是我在调度程序类上找不到该选项。看起来它是从.NET 4.0开始提供的。我的问题是,我如何让它在.NET3.5中工作?请注意,调用发生在我的ViewModel中,而不是View中 代码: 谢谢C# 调度器调度器-Rx,c#,system.reactive,C#,System.reactive,我们正在使用.NET3.5,并且已经开始使用反应式扩展。我们正在使用system.Reactive(运行时版本:v2.0.50727),它与.NET3.5兼容 由于我使用WPF控件(它是winforms shell,嵌入了WPF主机控件),所以我试图在调度程序类(system.Responsive.concurrency.scheduler)上观察一个事件,但是我在调度程序类上找不到该选项。看起来它是从.NET 4.0开始提供的。我的问题是,我如何让它在.NET3.5中工作?请注意,调用发生在我
-Mike我认为您应该能够使用DispatchersScheduler。当前您应该能够从 或者如果你已经在正确的线程上了
this.ObservePropertyChanged(x => x.Queue)
.ObserveOn(SynchronizationContext.Current);
更新:基于Rx 2.2.4.0
WPF的DispatchersScheduler当前已移动到System.Reactive.Windows.Threading命名空间中
使用Nuget package,搜索Rx WPF以下载包,并使用Dispatchers Scheduler.Current代替Scheduler.DispatcherAFAIK,Current将仅调用回调线程上的操作,回调线程是后台线程。我需要在UI线程上执行订阅,UI绑定集合正在更新。DispatchersScheduler.Current就是您所描述的。它将调用封送到当前ui dispatcher.ah..现在我明白了..“DispatchersScheduler”而不是“Scheduler”。.我尝试了System.Reactive.Concurrency.DispatchersScheduler.current,该行导致编译错误。您确定这在.NET 3.5中可用吗?应该是,对于DispatchersScheduler的实现,没有什么是.NET3.5不能提供的。名称空间正确,可能缺少一些引用?这个问题似乎已解决,请确保使用wpf/xaml nuget包。显然,与Dispatcher相关的代码不会在平台无关的代码库中发布,因为在服务器上它没有意义,而在其他平台上它有不同的含义(winPhone/silverlight)
this.ObservePropertyChanged(x => x.Queue)
.ObserveOn(control);
this.ObservePropertyChanged(x => x.Queue)
.ObserveOn(SynchronizationContext.Current);