AccidentalFish.ApplicationSupport.Core.Policies.Implementation.AsynchronousBackoffPolicy.ExecuteAsync C# (CSharp) Method

ExecuteAsync() public method

public ExecuteAsync ( Func function, System.Action shutdownAction, CancellationToken cancellationToken ) : Task
function Func
shutdownAction System.Action
cancellationToken System.Threading.CancellationToken
return Task
        public async Task ExecuteAsync(Func<Task<bool>> function, Action shutdownAction, CancellationToken cancellationToken)
        {
            _shutdownAction = shutdownAction;
            _cancellationToken = cancellationToken;

            bool shouldContinue = true;

            do
            {
                bool didWork = await function();
                if (!didWork)
                {
                    shouldContinue = await Backoff();
                }
                else
                {
                    _backoffIndex = -1;
                }

                if (_cancellationToken.IsCancellationRequested)
                {
                    shouldContinue = false;
                }
            } while (shouldContinue);
            _shutdownAction?.Invoke();
        }

Same methods

AsynchronousBackoffPolicy::ExecuteAsync ( Func function, CancellationToken cancellationToken ) : Task