Une maquette rapide de la façon dont cela pourrait être fait. Remarque, je n'ai fait qu'une simple requête web mais cela devrait facilement s'étendre pour interagir avec l'API Twitter.
Mise à jour: mon exemple précédent ne fonctionnait pas bien avec les demandes répétées. L'exemple amélioré suivant utilise Observable.Interval
pour générer un flux continu de graduations, ce qui entraîne la création de requêtes et le téléchargement de réponses.
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);
Mise à jour 2: Semble comme l'utilisation des bibliothèques comme TweetSharp traiterait les demandes Twitter bien pour vous. Observable.FromAsyncPattern
combiné avec la méthode asynchrone twitter.BeginRequest
fait une belle combinaison.
Merci pour l'exemple. Pensez-vous qu'il est possible d'aller chercher toutes les 5 secondes les nouveaux tweets? Comme votre exemple n'utilise pas Twitter, comment feriez-vous pour vérifier si le contenu de la page a changé au cours des 5 dernières secondes et afficher ces changements? – japf
@Jalfp: voir mon échantillon amélioré. Toujours pas d'intégration sur Twitter (j'y reviendrai si le temps le permet), mais le téléchargement du contenu est au moins téléchargeable toutes les 5 secondes. –
Merci beaucoup pour votre effort! Je vais essayer d'utiliser votre échantillon pour mon idée. J'apprécie vraiment votre aide :-) – japf