private static ITaskSeriesTimer CreateUpdateMessageVisibilityTimer(IStorageQueue queue,
                                                                           IStorageQueueMessage message, TimeSpan visibilityTimeout,
                                                                           IBackgroundExceptionDispatcher backgroundExceptionDispatcher)
        {
            // Update a message's visibility when it is halfway to expiring.
            TimeSpan normalUpdateInterval = new TimeSpan(visibilityTimeout.Ticks / 2);

            IDelayStrategy     speedupStrategy = new LinearSpeedupStrategy(normalUpdateInterval, TimeSpan.FromMinutes(1));
            ITaskSeriesCommand command         = new UpdateQueueMessageVisibilityCommand(queue, message, visibilityTimeout, speedupStrategy);

            return(new TaskSeriesTimer(command, backgroundExceptionDispatcher, Task.Delay(normalUpdateInterval)));
        }
        private ITaskSeriesTimer CreateUpdateMessageVisibilityTimer(IStorageQueue queue,
                                                                    IStorageQueueMessage message, TimeSpan visibilityTimeout,
                                                                    IWebJobsExceptionHandler exceptionHandler)
        {
            // Update a message's visibility when it is halfway to expiring.
            TimeSpan normalUpdateInterval = new TimeSpan(visibilityTimeout.Ticks / 2);

            IDelayStrategy     speedupStrategy = new LinearSpeedupStrategy(normalUpdateInterval, MinimumVisibilityRenewalInterval);
            ITaskSeriesCommand command         = new UpdateQueueMessageVisibilityCommand(queue, message, visibilityTimeout, speedupStrategy);

            return(new TaskSeriesTimer(command, exceptionHandler, Task.Delay(normalUpdateInterval)));
        }
        private static ITaskSeriesTimer CreateUpdateMessageVisibilityTimer(IStorageQueue queue,
            IStorageQueueMessage message, TimeSpan visibilityTimeout,
            IBackgroundExceptionDispatcher backgroundExceptionDispatcher)
        {
            // Update a message's visibility when it is halfway to expiring.
            TimeSpan normalUpdateInterval = new TimeSpan(visibilityTimeout.Ticks / 2);

            IDelayStrategy speedupStrategy = new LinearSpeedupStrategy(normalUpdateInterval, TimeSpan.FromMinutes(1));
            ITaskSeriesCommand command = new UpdateQueueMessageVisibilityCommand(queue, message, visibilityTimeout, speedupStrategy);
            return new TaskSeriesTimer(command, backgroundExceptionDispatcher, Task.Delay(normalUpdateInterval));
        }