我試圖總結我的周圍RX而是介於頭我的大腦爆炸:)RX,重試,允許處理異常
我試圖做的是通過RX異步方式調用一個WCF方法。 這裏沒什麼特別的,但是當WCF方法拋出一個錯誤時,我想重新創建通道並給它另一個去(最多3次)。
我至今是:
var _sc = new Service.Service1Client();
var _observableFunc = Observable.FromAsyncPattern<int, string>(_sc.BeginGetData, _sc.EndGetData);
var _observable = _observableFunc(666);
var _defered = Observable.Defer(() => _observable);
// Here something should be done, but don't know what...
using (_retryable.Subscribe(x => Console.WriteLine("Async ==> '{0}'", x),
ex => Console.WriteLine("Oops ==> {0}", ex.Message)))
{
Console.ReadLine();
}
我Catch<TSource, TException>
發揮各地,這讓我捕獲異常,並繼續使用相同的觀察到的,因此給我我想要的東西。 唯一的問題是它永遠運行,這意味着如果我繼續拋出異常,那麼這個東西永遠都不會停止!
看看Observable.Retry是否有幫助。另外,如果你剛剛開始使用RX並且你的大腦沒有受到傷害,那麼你做錯了;-) –
對我的大腦,但它的傷害比昨天少傷害:) 我發現了已經重試但問題是我的「熱」可觀察性仍然「熱,我沒有得到完全的Defer語法的點 –