This is a code that I've developed so far:
var observable = Observable.Create<string>(async observer =>
{
var wc = new WebClient { UseDefaultCredentials = true };
observer.OnNext(await wc.DownloadStringTaskAsync("http://ya.ru"));
});
observable.Subscribe(
res => Debug.WriteLine("got result: {0}", res),
exc => Debug.WriteLine("exception: {0}", exc.Message)
);
This correctly fetches website's data and triggers my callback once. What I want is to have an infinite loop that acts like this: await result -> call OnNext -> wait n seconds -> repeat an operation.
Creating an Observable.Interval and SelectMany it into my Observable won't quite do because this will be querying a website for a fixed periods of time. I want the next call to be triggered only after the previous succeeds or fails. What's the most elegant and concise way to achieve this?