2011-06-26 9 views
29

私はPluralSightのDan SullivanのRx Extensionsトレーニングコースを勉強しようとしています。それは優れたものですが、残念ながらRxは1ヶ月前にコースが公開されたにもかかわらず、既に変更されているようです。Rx for .NET - Scheduler.Dispatcherには何が起こったのですか?

ほとんどの変更は簡単です(3つのdllから1つのdllへの変更、使用される名前空間の変更など)が、Danの例ではScheduler.Dispatcherの代わりに何を使用するべきかを理解するのに苦労しています。私は、スケジューラで利用可能なプロパティで何も明らかに見ることができません。

ここで私は、私はオブザーバーコード(結果を呼び出すために何を使用する必要があり

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))); 

(リファクタリング?)のRxライブラリ(currenly安定したバージョンのv1.0.10605)で作業を取得しようとしているコードです.AppendText)を元のDispatcherスレッドに追加しますか?

答えて

41

DispatcherSchedulerSystem.Reactive.Windows.Threadingアセンブリに移動されました。 NuGetを使用している場合は、Rx-WPF

+0

感謝を。私はそのDLLを参照しているが、私は上記のクエリで "ObserveOn"メソッドを置き換えるために使用する必要があります理解するのに苦労しています。私はDispatcherSchedulerを参照することができますが、呼び出すためのSubscribeメソッドはありません。 – irascian

+5

'System.Reactive.Windows.Threading'アセンブリで定義されている拡張メソッドであるObserveOnDispatcher()に変更できます。 –

+0

Gotcha!ありがとう。最後の行はobservableQuery.ObserveOnDispatcher()になります。Subscribe(n => Results.AppendText(string.Format( "{0} \ n"、n))); – irascian

1

2016-11-25現在、参考文献はRX-XAMLです。

残念ながら、MicrosoftはRX v2.2.5を完全にクロスプラットフォームなRX v3.1.0に置き換えました。ただし、クロスプラットフォームライブラリはWPFをサポートしていません。これは、WPFで動作するNuGetパッケージを見つけることが難しいことを意味します。

WPF + .NET 4.5を使用している場合は、RX-XAMLに依存するNuGetパッケージをインストールしてください。例えば、reactiveui-blendRX-XAML v2.2.5に依存するため、これは現在動作します:

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

VS内のパッケージマネージャコンソールから 'Install-Package Rx-Xaml -Version 2.2.5'を実行する方が簡単です。 –

+0

ニース!これはもっと簡単に思えますが、これからはこれを使用します。 – Contango

関連する問題