10秒ごとにフィードをポーリングして更新を確認するMVVMプロジェクトがあります。フィードの結果は、ObervableCollectionを使用して表示されます。これはうまく機能しますが、ディスパッチされたタイマーをどこに置くことができるかわかりません。Model.DataServiceまたはViewModel.MainViewModelに含める必要がありますか?
ありがとう
10秒ごとにフィードをポーリングして更新を確認するMVVMプロジェクトがあります。フィードの結果は、ObervableCollectionを使用して表示されます。これはうまく機能しますが、ディスパッチされたタイマーをどこに置くことができるかわかりません。Model.DataServiceまたはViewModel.MainViewModelに含める必要がありますか?
ありがとう
あなたのビューは常に開いていて、ViewModel に存在する Observable Collection にバインドされていると思います。その場合、ViewModel は Observable Collection の所有者であるため、間違いなく ViewModel に時間を入れます。
プロジェクトの詳細を知らずに正解はないと思います。
MVVM-Pattern について:
BusinessObjects の問題だと思いますか? (はい => Model.DataService に配置します)
それとも、View の機能ですか? はい => ViewModel.MainViewModel に配置します。
ユーザーがボタンを押した瞬間に利用可能なすべての更新を表示するビューを開発するつもりですか (更新を表示)? もしそうなら、ViewModel レイヤーにタイマーを配置することをお勧めします。
これは、Observable.FromEvent メソッドを使用してReactive Frameworkを使用するのに最適な状況です。ポーリングではなく、これにより、イベントへのサブスクリプションを設定できます。時間が経過するまでイベントを無視して、それをトロールすることもできます (.Throttle(3000) で 3 秒の遅延)。