我目前使用此代码涂调用web服务来获得数据的应用程序页面。 一切都很好,直到我尝试调用此方法连续10次,而无需等待第一呼叫到结束。

这样做使我有倒闭的问题,我得到了我所有的结果相同的结果的对象。

有没有人用Rx.Net之前面对此?如果是的话没有任何人有一个想法或铅,这样我可以解决这个问题。

    public void GetPage(long pageId, Action<PageDTO> observer)
    {

        Observable.FromEvent<GetPageCompletedEventArgs>(
            handler => Service.GetPageCompleted += handler,
            handler => Service.GetPageCompleted -= handler)
            .Select(eventHandler => eventHandler.EventArgs.Result)
            .Take(1) // necessary to ensure the observable unsubscribes
            .ObserveOnDispatcher() // controls which thread the observer runs on;
            .Subscribe(observer, HandleError);

        Service.GetPageAsync(pageId);
    }
有帮助吗?

解决方案

Service总是相同的实例?如果是的话,你会遇到各种各样的疯狂,由此GetPageCompleted事件将通过不同的调用创建(使用不同的参数)的FromEvent来处理,这可以解释为什么你的结果是被称为在所有的方法相同在同一时间。

您可以通过使用开始/结束的方法,尽管你仍可能运行与基础连接上争用问题解决这个具体问题。

public void GetPage(long pageId, Action<PageDTO> observer)
{
    Observable.FromAsyncPattern<long, PageDTO>(
            service.BeginGetAwards, service.EndGetAwards)(pageId)
        .ObserveOnDispatcher() // controls which thread the observer runs on;
        .Subscribe(observer, HandleError);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top