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>
いじってみたところ、例外をトラップして同じオブザーバブルを続行できるため、必要なものが得られました。唯一の問題は、それが永久に実行されることです。つまり、例外をスローし続けると、物事が止まることはありません。