Во-первых .Select (x => x) - запрет, поэтому вы можете удалить его.
Я бы немного изменил код.Сначала давайте разбить его на составные части:
1) Таймер.Каждый второй опрос сервера.
var poll = Observable.Interval (TimeSpan.FromSeconds (1));
2) Вызов для получения заголовка
var lastModified =Observable.FromAsyncPattern (req.BeginGetResponse, req.EndGetResponse) .Select (x => x.Headers ["Last-Modified"]);
3) Выбор для получения документа
.Select (_ => XDocument.Load ("http://test.com/data.xml"));
Мы должны быть в состоянии составить это красиво:
var lastModified = from interval in Observable.Interval(TimeSpan.FromSeconds(1))
from response in Observable.FromAsyncPattern(req.BeginGetResponse, req.EndGetResponse)
select response.Headers["Last-Modified"];
var data = lastModified.DistinctUntilChanged().Select(_ => XDocument.Load("http://test.com/data.xml"));
data.Subscribe(dataXml=>
{
Console.WriteLine("Data has changed!");
Console.WriteLine(datXml);
});
Cavet Я просто набрал это прямо в браузере. Я хотел быудивительно, если он скомпилируется.