Я использую платформу Polly для обработки временных сбоев. Для синхронных операций политика автоматического выключателя Polly работает нормально, но когда я создал ее асинхронную версию, она не пытается выполнить повторно. Пожалуйста, предложите:
Асинхронный метод:
private async static Task HelloWorld()
{
if (DateTime.Now < programStartTime.AddSeconds(10))
{
Console.WriteLine("Task Failed.");
throw new TimeoutException();
}
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine("Task Completed.");
}
Политика асинхронности автоматического выключателя Polly
private static void AsyncDemo3(Func<Task> action)
{
programStartTime = DateTime.Now;
Policy policy = Policy
.Handle<TimeoutException>()
.CircuitBreakerAsync(3, TimeSpan.FromSeconds(2));
try
{
var a = policy.ExecuteAndCaptureAsync(action, true).GetAwaiter().GetResult();
}
catch (AggregateException ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
}
Выполнение политики автоматического выключателя Polly:
AsyncDemo3 (HelloWorld);
Пожалуйста, помогите найти и решить проблему.