RX,重试并允许处理异常

时间:2012-09-18 10:53:39

标签: c# .net system.reactive observable

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

0 个答案:

没有答案