具有Observable.FromAsyncPattern <webresponse> </webresponse>的状态对象

时间:2012-04-08 10:59:50

标签: c# asynchronous system.reactive

我正在使用Rx框架来执行异步请求,这一切都正常,但是我需要能够在请求/响应之间传递一个状态对象,因为我处理响应时,我需要知道一些额外的只有在请求发生时才知道的信息,因此我想以某种方式传入状态对象。

目前我使用的方法为:

 public void ProcessGetRequest(WebRequest request, Action<WebResponse> handle, Action<Exception> error, int delaySeconds = 0)
        {
            request.Method = "GET";

            Observable.FromAsyncPattern<WebResponse>(request.BeginGetResponse, request.EndGetResponse)().Delay(new TimeSpan(0, 0, delaySeconds)).ObserveOnDispatcher().SubscribeOnDispatcher().Subscribe(handle, error);
        }

在request.BeginGetResponse方法上,我知道你可以传递一个状态对象,并通过返回的IAsyncResult对象访问该状态对象,但是无法在Rx / Observable框架中找到一种方法,如上所述。有谁知道我怎么做到这一点?

2 个答案:

答案 0 :(得分:0)

应该很简单。通过关闭传递状态。

答案 1 :(得分:0)

结束如下:

  public void ProcessGetRequest<T>(WebRequest request, Action<WebResponse,T> handle, Action<Exception,T> error, T state, int delaySeconds = 0)
        {
            request.Method = "GET";

            Observable.FromAsyncPattern<WebResponse>(request.BeginGetResponse, request.EndGetResponse)().Delay(new TimeSpan(0, 0, delaySeconds)).ObserveOnDispatcher().SubscribeOnDispatcher().Subscribe(x=>handle(x,state),y=>error(y,state));
        }