using System; using System.Threading; using System.Threading.Tasks; namespace FarmmapsApi { public static class Extensions { public static async Task PollTask(TimeSpan retryTime, Func callback) { var tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; do { try { await callback(tokenSource); await Task.Delay(retryTime, token); } catch { tokenSource.Cancel(); } } while (!token.IsCancellationRequested); } } }