将计时器放在轮询订阅源的mvvm项目中的位置

时间:2010-06-24 09:22:55

标签: .net mvvm-light

我有一个MVVM项目,每隔10秒轮询一次Feed以查看更新。使用ObervableCollection显示Feed的结果。 这很好用,但我不确定我可以把我的发送时间放在哪里。它应该在Model.DataService中还是在ViewModel.MainViewModel?

感谢

3 个答案:

答案 0 :(得分:0)

我认为在不了解项目的更多细节的情况下,没有正确的答案。

关于MVVM模式:
你认为这是你的BusinessObjects的问题吗? (是=>将其放在Model.DataService中)
或者它是您的视图的一个功能?是=>将其放在ViewModel.MainViewModel中。

您是否打算在用户按下按钮时显示所有可用更新的视图(显示更新)?如果是这样,我建议将计时器放在ViewModel层中。

答案 1 :(得分:0)

我认为您的视图一直是打开的,并且绑定到驻留在ViewModel中的Observable Collection。在这种情况下,我肯定会在ViewModel中加入时间,因为ViewModel是Observable Collection的所有者。

答案 2 :(得分:0)

这是使用Observable.FromEvent方法使用Reactive Framework的完美情况。这将允许您设置对事件的订阅,而不是轮询。你甚至可以把它((.Throttle(3000)延迟3秒),忽略事件直到时间过去。