2014-04-18 8 views
6

Próbuję rozpocząć korzystanie z rozszerzeń reaktywnych (Rx). Oto mały przykład ja gotowane:Opcje narzędzia Rx Scheduler przestarzałe

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

     obs.Subscribe(Console.WriteLine); 

     Console.ReadLine(); 

Gdy używam Scheduler.ThreadPool, Scheduler.NewThread itp, mam to ostrzeżenie:

System.Reactive.Concurrency.Scheduler.ThreadPool 'jest nieaktualny:' To Właściwość nie jest już obsługiwana z powodu refaktoryzacji powierzchni interfejsu API i eliminacji zależnych od platformy zależności. Rozważ skorzystanie z opcji Scheduler.Default w celu uzyskania najbardziej odpowiedniego harmonogramu opartego na puli. Aby uzyskać dostęp do określonego programu planującego opartego na puli, dodaj odwołanie do zestawu System.Reactive.PlatformServices dla platformy docelowej i użyj odpowiedniego harmonogramu w obszarze nazw System.Reactive.Concurrency. Aby uzyskać więcej informacji, patrz http://go.microsoft.com/fwlink/?LinkID=260866.

Jeśli postępuję zgodnie z instrukcjami ostrzegawczymi, nadal otrzymuję ostrzeżenie. Czego oczekuję od harmonogramu, jeśli chcę korzystać z różnych opcji, które były dostępne za pośrednictwem klasy Scheduler?

+0

Czy możesz opublikować kod, w którym postępujesz zgodnie z instrukcjami? –

+0

Niewiele do opublikowania ... Miałem już referencję, a klasa Scheduler jest rzeczywiście z System.Reactive.Concurrency. Nie rozumiem, jakiego innego programu do planowania muszę użyć. – Gigi

+0

Więc w ogóle nie zmieniłeś kodu? Scheduler.ThreadPool jest przestarzały. Jeśli nadal próbujesz go użyć (bez względu na bibliotekę, którą zaimportowałeś), będzie to przestarzałe. Szukam prawidłowych metod ... –

Odpowiedz

9

Większość harmonogramów powinna mieć domyślną instancję. Powinieneś być w stanie używać NewThreadScheduler.Default, ThreadPoolScheduler.Instance, itp.