0

我正在使用 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 框架中找到一种方法。有谁知道我该怎么做?

4

2 回答 2

0

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

于 2012-04-09T01:23:52.303 回答
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));
        }
于 2012-04-09T04:23:16.063 回答