我正在努力完成关于PluralSight的Dan Sullivan的Rx Extensions培训课程。这是很好的东西但不幸的是Rx似乎已经被改变了,尽管该课程仅在一个月前发布。
大多数更改都很容易解决(从三个dll更改为单个dll,更改使用的命名空间等)但是我很难理解我应该使用什么代替Dan的示例中的Scheduler.Dispatcher。我在调度程序中可用的属性中看不到任何明显的内容。
这是我正在尝试使用(重构的?)Rx库(当前稳定版本v1.0.10605)的代码
var query = from number in Enumerable.Range(1, 25) select StringWait(number.ToString());
var observableQuery = query.ToObservable(Scheduler.ThreadPool);
observableQuery.ObserveOn(Scheduler**.Dispatcher**).Subscribe(n => Results.AppendText(string.Format("{0}\n", n)));
我应该使用什么来调用原始Dispatcher线程上的Observer代码(Results.AppendText)?
答案 0 :(得分:41)
DispatcherScheduler
已移至System.Reactive.Windows.Threading
程序集。如果您使用的是NuGet,则它位于Rx-WPF
答案 1 :(得分:1)
截至2016-11-25,参考文献为df
。
不幸的是,微软退出RX v2.2.5,转而使用完全跨平台的RX v3.1.0。但是,跨平台库不支持WPF。这意味着现在很难找到适用于WPF的NuGet包。
要解决此问题,如果您使用RX-XAML
+ WPF
,请安装任何依赖于.NET 4.5
的NuGet包。例如,RX-XAML
取决于reactiveui-blend
,因此现在可以使用:
RX-XAML v2.2.5
答案 2 :(得分:0)
在Rx for .NET v4 +中,程序集/程序包在System.Reactive
中合并。
现在可以在System.Reactive.Concurrency.DispatcherScheduler.Current
中找到分派器调度程序
var subscription = observable
.ObserveOn(System.Reactive.Concurrency.DispatcherScheduler.Current)
.Subscribe(observer);
在.NET Core 3.1 WPF应用程序中测试