using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Dfs.WayneChina.CardTrxManager
{
    /// <summary>
    /// A regular task to work on a designated `Action`, cancellation option offered.
    /// </summary>
    public class RegularScanTask
    {
        public static async Task Run(Action action, TimeSpan period, CancellationToken ct)
        {
            while (!ct.IsCancellationRequested)
            {
                await Task.Delay(period, ct);

                if (!ct.IsCancellationRequested)
                    action();
            }
        }

        public static Task Run(Action action, TimeSpan period)
        {
            return Run(action, period, CancellationToken.None);
        }

    }
}