2012-04-08 49 views
0

我使用的Rx框架來進行異步請求的狀態對象,這是所有工作正常,但我需要能夠通過請求/響應之間的狀態對象,因爲一旦我處理響應,我需要知道一些僅在請求發生時才知道的附加信息,因此我想以某種方式傳遞一個狀態對象。與Observable.FromAsyncPattern <WebResponse>

目前我使用的方法爲:

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

謝謝你,是的這就是我落得這樣做(見下文接聽) – Rosstified 2012-04-09 04:22:45

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)); 
     } 
+0

現在可以使國家強類型。沒有必要再讓它們成爲「對象」了。 – Enigmativity 2012-04-10 06:50:46

+0

好點,更新了我的答案。 – Rosstified 2012-04-10 10:44:00

+0

優秀。看起來非常好。 – Enigmativity 2012-04-11 03:20:52