Регулирование событий/постановка в очередь - Реактивные расширения?

Я хочу реализовать некоторое поведение дросселирования в одной из моих моделей представления. Это приложение Silverlight, однако я не думаю, что это особенно важно.

Рассмотрим класс с тремя свойствами:

  • Свойство1
  • Свойство2
  • Свойство3

Всякий раз, когда одно из этих свойств обновляется, необходимо обновление.

private void Refresh()
{
    //Call out to the server, do something when it comes back
}

Мои цели заключаются в следующем:

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

Если это имеет значение, я использую реализацию ChannelFactory для вызова сервера.

Какие шаблоны можно использовать для этого? Могут ли мне помочь реактивные расширения?

Редактировать:

Пометка ответа Павла как правильного. Хотя ReactiveUI в настоящее время не работает с silverlight5, он четко описывает шаги подхода/композиции к решению проблемы с использованием Rx.

7
задан Shaun Rowan 17 June 2012 в 15:57
поделиться