Быстрый макет того, как это можно сделать. Обратите внимание, что я только сделал простой веб-запрос, но он должен легко расширяться для взаимодействия с API Twitter.
Обновление: Мой предыдущий пример не работал с повторяющимися запросами. В следующем улучшенном образце используется Observable.Interval
для генерации непрерывного потока тиков, который управляет созданием запросов и загрузкой ответов.
Observable
.Interval(TimeSpan.FromSeconds(5))
.Select(ticks => (HttpWebRequest)WebRequest.Create("http://demicode.com"))
.Select(request => Observable.FromAsyncPattern(request.BeginGetResponse,
asyncResult =>
{
using(var response = request.EndGetResponse(asyncResult))
using (var sr = new StreamReader(response.GetResponseStream()))
{
return DateTime.Now.ToString() + sr.ReadToEnd();
}
}))
.SelectMany(getContent => getContent())
.ObserveOnDispatcher()
.Subscribe(content => downloadContent.Text = content);
Обновление 2: Похоже, что использование библиотек, таких как TweetSharp , будет прекрасно обрабатывать запросы Twitter Observable.FromAsyncPattern
в сочетании с асинхронным twitter.BeginRequest
методом создает хорошую комбинацию.