Это код, который я разработал до сих пор:
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)
);
Это правильно извлекает данные веб-сайта и запускает мой обратный вызов один раз. Я хочу иметь бесконечный цикл, который действует следующим образом: ожидание результата -> вызов OnNext
-> ожидание n
секунд -> повторение операции.
Создание Observable.Interval
и SelectMany
его в моем Observable
не совсем подходит, потому что это будет запрашивать веб-сайт в течение фиксированных периодов времени. Я хочу, чтобы следующий вызов запускался только после успешного или неудачного предыдущего. Какой самый элегантный и лаконичный способ добиться этого?