【发布时间】:2010-09-27 06:22:02
【问题描述】:
我使用 Rx 为我的 WCF Web 服务编写了一个简化的 Silverlight 客户端库,但是我注意到有时我会丢失已完成的事件。
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;
}
我认为问题是由于 Web 服务在订阅完成事件之前被调用并返回造成的。我不知道如何让 Rx 在 Async 调用之前订阅事件。我试过 StartWith 但这要求输入和输出类型相同,有什么想法吗?
【问题讨论】:
-
在我看来不是很简单吗?
-
相信我,当你使用它时。调用它只是 service.GetReport("MyReport1").Subscribe(this.LoadResults);
标签: silverlight wcf asynchronous system.reactive