以下のようなキューを実行するコードがあります
Queue
.GetConsumingEnumerable()
.ToObservable()
.Select(x => x.ObserveOn(NewThreadScheduler.Default))
.SubscribeOn(NewThreadScheduler.Default)
.Subscribe(
grp => grp.ForEachAsync(b => b.Execute())
.ContinueWith(ExecuteOnTaskFailure, TaskContinuationOptions.OnlyOnFaulted));
メソッドExecuteOnTaskFailureは次のように定義されています
private static void ExecuteOnTaskFailure(Task previousTask)
{
if (!previousTask.IsFaulted)
return;
if (previousTask.Exception != null && previousTask.Exception.InnerExceptions != null)
foreach (var exception in previousTask.Exception.InnerExceptions)
{
Logger.Error("Task failed continued to the next task : " + exception.Message, exception);
}
}
これは機能しません。キュー内のタスクの1つが実行に失敗した場合でも、タスクを実行し続ける方法がわからないようです。また、キューの最後にこの失敗したタスクを再キューイングする方法はありますか?
ここでの助けは大歓迎です。