2012-04-08 32 views
0

私はRxフレームワークを使用して非同期要求を実行していますが、これは問題なく動作しますが、応答を処理すると要求/応答間に状態オブジェクトを渡す必要があります要求が行われたときにだけわかっていた追加情報を知る必要があるため、状態オブジェクトを何とか渡す必要があります。Observable.FromAsyncPatternを持つ状態オブジェクト<WebResponse>

は、現在、私のようにメソッドを使用しています:request.BeginGetResponse方法で

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

、私はあなたが状態オブジェクトを渡す、とは、IAsyncResultオブジェクトが返さ経由してその状態オブジェクトにアクセスすることができます知っているが、見つけるカント上記のようにRx/Observableフレームワーク内でそれを行う方法。私はこれをどのようにすることができるか誰にも分かりますか?

答えて

0

これは非常に簡単です。クロージャで状態を渡します。やってしまった

+0

おかげで、ええthatsの私がやってしまったあなたは、今の状態が強く型付けされたことができます – Rosstified

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

+0

良い点、私の答えを更新しました。 – Rosstified

+0

優れています。非常に良い見えます。 – Enigmativity

関連する問題