Где разместить таймер в проекте mvvm, который опрашивает канал

У меня есть проект MVVM, который опрашивает канал каждые 10 секунд, чтобы узнать об обновлениях. Результат из фида отображается с помощью ObervableCollection. Это хорошо работает, но я не уверен, куда я могу поместить свой отправленный таймер. Должен ли он быть в Model.DataService или в ViewModel.MainViewModel?

Благодарность


person reachify    schedule 24.06.2010    source источник


Ответы (3)


Я думаю, что правильный ответ невозможен, не зная более подробной информации о проекте.

Что касается шаблона MVVM:
Как вы думаете, дело в ваших BusinessObjects? (Да => Поместите его в Model.DataService)
Или это функция вашего представления? Да => Поместите его в ViewModel.MainViewModel.

Собираетесь ли вы разработать представление, отображающее все доступные обновления в тот момент, когда пользователь нажимает кнопку (Показать обновления)? Если это так, я предлагаю разместить таймер в слое ViewModel.

person WaltiD    schedule 24.06.2010
comment
Да, я согласен с вами ... больше информации было бы полезно, но сомневаюсь, что владелец ждет нашего ответа :) - person Noctis; 09.10.2013

Я предполагаю, что ваше представление открыто все время и привязано к наблюдаемой коллекции, которая находится в вашей ViewModel. В этом случае я бы определенно добавил время в ViewModel, потому что ViewModel является владельцем Observable Collection.

person Wouter Janssens    schedule 03.08.2010

Это идеальная ситуация для использования Reactive Framework с использованием Observable.FromEvent. метод. Вместо опроса это позволит вам настроить подписку на событие. Вы даже можете троттлить его (.Throttle(3000) для 3-секундной задержки), игнорируя события, пока не истечет время.

person codeputer    schedule 26.01.2011