Использование Reactive Extensions для создания одного события? - PullRequest
2 голосов
/ 21 июня 2011

Я пытаюсь разобраться с .NET Reactive Extensions, и мне интересно, можно ли их использовать в следующем сценарии:

В моем приложении WP7 я использую SterlingDatabase для сохранения приложениянастройки.Поскольку пользователь изменяет настройки, я хочу периодически вызывать Database.Flush()

Так что в моем методе набора свойств я хотел бы запустить событие таймера Database.Flush () и, скажем, 5 секунд, напишите в базу данных.Если записано другое свойство, я хочу перезапустить таймер.

Я знаю, что могу сделать это с помощью объекта таймера, вызывая Start() и Stop(), но я хотел знать, могу ли я это сделатьс Rx, чтобы создать операцию Asycn, которую я могу в принципе запускать и останавливать, не используя таймер?

1 Ответ

5 голосов
/ 21 июня 2011

Использование газа:

public void AttachFlushes(IObservable<Unit> writes, SterlingDb  db)
{
    writes.Throttle(TimeSpan.FromSeconds(5)).Do(_ => db.Flush()).Subscribe();
}
...