Receba o próximo evento em sequência a cada segundo com extensões reativas
Eu tenho os tipos abaixo ...
public class NewsFeed
{
public event EventHandler<NewsItemEventArgs> NewItem;
.....
}
public class NewsItemEventArgs : EventArgs
{
public NewsItem Item;
public NewsItemEventArgs(NewsItem newsItem)
{
Item = newsItem;
}
}
public class NewsItem
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
O evento NewItem do NewsFeed dispara eventos com eventArgs do tipo NewsItemEventArgs. No meu sistema, os eventos são publicados em rajadas, digamos 10 NewsItems em uma pequena janela de 1 segundo e, depois, não há mais notícias por 60 segundos. Eu gostaria de suavizar essas explosões com o RX para que minhas notícias da interface do usuário "apareçam" para chegar uma de cada vez em intervalos mais regulares de 5 segundos.
Eu sei que preciso criar um observável com algo como o abaixo
_source = Observable.FromEventPattern<NewsItemEventArgs>(
h => _newsFeed.NewItem += h,
h => _newsFeed.NewItem -= h);
mas eu não sei como transformar e assinar o observável de tal forma que eu recebo os eventos em vez de eles virem nas explosões descritas acima.
Alguma ideia?