2011-06-26 10 views
29

Próbuję pracować poprzez kurs przygotowawczy RV Extensions Dana Sullivana na PluralSight. To doskonałe rzeczy, ale Rx wydaje się niestety już zmieniony, mimo że kurs został opublikowany zaledwie miesiąc temu.Rx dla .NET - Co się stało z programem Scheduler.Dispatcher?

Większość zmian jest trywialna do opracowania (zmiana z trzech bibliotek dll na jedną bibliotekę dll, zmiana używanych przestrzeni nazw itp.), Ale staram się zrozumieć, co powinienem użyć zamiast Scheduler.Dispatcher w przykładzie Dana. Nie widzę niczego oczywistego we właściwościach dostępnych w programie planującym.

Oto kod próbuję dostać pracę z refactored (?) Biblioteki Rx (the currenly stabilna wersja 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))); 

Co należy używać do wywoływania kodu Obserwatora (Wyniki .AppendText) w oryginalnym wątku Dispatchera?

Odpowiedz

41

Urządzenie DispatcherScheduler zostało przeniesione do zespołu System.Reactive.Windows.Threading. Jeśli używasz NuGet, jest to Rx-WPF

+0

Dzięki. Mam tej odwołanie dll, ale staram się zrozumieć, co powinienem użyć, aby zastąpić metodę "ObserveOn" w powyższym kwerendzie. Mogę odwołać się do DispatcheraSchedulera, ale nie ma na nim metody Subskrybcji, aby zadzwonić. – irascian

+5

Możesz po prostu zmienić go na 'ObserveOnDispatcher()', który jest metodą rozszerzenia zdefiniowaną w zespole 'System.Reactive.Windows.Threading'. –

+0

Mam cię! Dzięki. Tak więc moja ostatnia linia staje się obserwowalnaQuery.ObserveOnDispatcher(). Subscribe (n => Results.AppendText (string.Format ("{0} \ n", n))); – irascian

1

Od 2016-11-25 numer referencyjny to RX-XAML.

Niestety, Microsoft usunął RX v2.2.5 na rzecz RX v3.1.0, który jest w pełni platformą. Jednak biblioteki między platformami nie obsługują WPF. Oznacza to, że obecnie trudno jest znaleźć pakiet NuGet, który działa z WPF.

Aby obejść ten problem, jeśli używasz WPF + .NET 4.5, zainstaluj każdy pakiet NuGet z zależnością od RX-XAML. Na przykład, reactiveui-blend zależy RX-XAML v2.2.5, więc będzie teraz pracować:

setClipboard.ObserveOnDispatcher().Subscribe(o => 
{ 
    ... 
}); 
+1

Łatwiej mi uruchomić 'Install-Package Rx-Xaml -Version 2.2.5' z Konsoli menedżera pakietów w VS. –

+0

Nice! Wydaje się to prostsze, użyję tego od teraz. – Contango