Ejemplo n.º 1
0
        public async Task <T> HandleAsync <T>(Func <Task <T> > tryFunc, Action <Exception> catchFunc = null, Func <Task> finallyFunc = null)
        {
            T   result   = default;
            var attempts = 0;

            var success = false;

            while (!success && attempts < Options.MaximumAttempts)
            {
                result = await TryCatchHandler.HandleAsync(async() =>
                {
                    var value = await tryFunc();
                    success   = true;
                    return(value);
                }, async(ex) =>
                {
                    await Task.CompletedTask;
                    catchFunc?.Invoke(ex);
                    Thread.Sleep(Options.Timeout);
                    attempts++;
                }, finallyFunc, catchExceptionTypesArray : Options.ExceptionTypes.ToArray());
            }

            return(result);
        }
 public Task <T> HandleAsync(Func <Task <T> > tryFunc, Func <Exception, Task> catchFunc, Func <Task> finallyFunc = null, params Type[] catchExceptionTypesArray)
 {
     return(TryCatchHandler.HandleAsync(tryFunc, catchFunc, finallyFunc, catchExceptionTypesArray: catchExceptionTypesArray));
 }