2014-04-18 39 views
6

我正在尝试使用Reactive Extensions(Rx)。这里有一个小例子,我熟了起来:Rx调度程序选项已弃用

 var query = from number in Enumerable.Range(1, 20) select number; 
     var obs = query.ToObservable(Scheduler.ThreadPool); 

     obs.Subscribe(Console.WriteLine); 

     Console.ReadLine(); 

当我使用Scheduler.ThreadPoolScheduler.NewThread,等等,我得到这样的警告:

System.Reactive.Concurrency.Scheduler.ThreadPool '已过时:' 这由于重构了API表面并消除了特定于平台的依赖关系,因此不再支持该属性。考虑使用Scheduler.Default来获取平台最合适的基于池的调度程序。为了访问特定的基于池的调度程序,请为目标平台添加对System.Reactive.PlatformServices程序集的引用,并在System.Reactive.Concurrency命名空间中使用适当的调度程序。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=260866

如果我按照警告的指示,我仍然会收到警告。如果我想要使用以前通过Scheduler课程获得的各种选项,我准备如何使用调度器?

+0

您可以在您遵循说明的地方发布代码吗? –

+0

没有太多发布......我已经有了引用,Scheduler类确实来自System.Reactive.Concurrency。我不明白我需要使用其他调度程序。 – Gigi

+0

所以你根本没有改变代码? Scheduler.ThreadPool已过时。如果您仍在尝试使用它(不管您导入了哪个库),它将会过时。我正在寻找正确的方法... –

回答

9

大多数调度程序应该带有一个默认实例。您应该可以使用NewThreadScheduler.Default,ThreadPoolScheduler.Instance等。