我正试图绕着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>
一起玩,这让我能够捕获异常并继续使用相同的观察结果,因此给了我想要的东西。
唯一的问题是它会永远运行,这意味着如果我继续抛出异常,事情永远不会停止!