我正在使用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框架中找到一种方法,如上所述。有谁知道我怎么做到这一点?
答案 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));
}