RegularScanTask.cs 799 B

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. namespace Dfs.WayneChina.CardTrxManager
  7. {
  8. /// <summary>
  9. /// A regular task to work on a designated `Action`, cancellation option offered.
  10. /// </summary>
  11. public class RegularScanTask
  12. {
  13. public static async Task Run(Action action, TimeSpan period, CancellationToken ct)
  14. {
  15. while (!ct.IsCancellationRequested)
  16. {
  17. await Task.Delay(period, ct);
  18. if (!ct.IsCancellationRequested)
  19. action();
  20. }
  21. }
  22. public static Task Run(Action action, TimeSpan period)
  23. {
  24. return Run(action, period, CancellationToken.None);
  25. }
  26. }
  27. }