Использование Rx для упрощения асинхронного запроса веб-службы Silverlight

Я написал упрощенную клиентскую библиотеку Silverlight для своего веб-сервиса WCF с использованием Rx, однако иногда замечаю, что пропускаю завершенные события.

public IObservable<XElement> GetReport(string reportName)
{
    return from client in Observable.Return(new WebServiceClient())
           from request in Observable.ToAsync<string>(client.GetReportDataAsync)(reportName)
           from result in Observable.FromEvent<GetReportDataCompletedEventArgs>(client, "GetReportDataCompleted").Take(1)
           from close in this.CloseClient(client)
           select result.EventArgs.Result;
}

Я считаю, что проблема вызвана тем, что веб-сервис вызывается и возвращается до подписки на завершенное событие. Я не могу понять, как заставить Rx подписаться на событие до вызова Async. Я пробовал StartWith, но для этого нужно, чтобы типы ввода и вывода были одинаковыми, есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос