2014-04-18 65 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等。