次の問題があります。新しいイベントを通知するためにOnNextメソッドを使用する件名があります。ただし、OnErrorというメソッド呼び出しでコード内でシミュレートされる例外が発生することがあります。エラーの原因は時間に依存しますので、同じアクションをもう一度やり直すと数回は成功します。ですから、新しいシーケンスを生成する関数を受け入れるcatchメソッドを使用して、アクションを5回繰り返します。すべての繰り返し試行が失敗した場合、最終的な例外がスローされ、少なくとも1つが成功した場合は、OnNext(5)およびOnNext(6)を続行する必要があります。アクションを再試行する方法OnError reactive X IObservableを複数回実行しても成功する場合
例外的に、その後のOnError呼び出しを防止するのが理想的ですが、私の場合はそうではありません。
リトライ、コンカット、キャッチなどの方法で複数のシナリオを試しましたが、私が望むように何もできませんでした。
Subject<int> sub = new Subject<int>();
var seq = sub.Select(x =>
{
//time dependent operation
Console.WriteLine(x);
return x;
}).
Catch((SeqException<int> ex) =>
{
return Observable.Empty(0); // what sequece to return to achieve the desired behaviour
});
seq.Subscribe();
sub.OnNext(1);
sub.OnNext(2);
sub.OnNext(3);
sub.OnError(new SeqException<int>{ Value = 4});
sub.OnNext(5);
sub.OnNext(6);
seq.Wait();
ありがとうございます。
で受信します。あなたの例はかなり興味深いです残念ながら正しいので、問題に取り組む方法について考える必要があります。 –
サードパーティのコードが 'ISubject'を受け入れるならば、一度作ることができ、最終的に' Notification 'を発行することができます。 –
Asti