private void InternalScheduleRepeatedly(TimeSpan initialDelay, TimeSpan interval, Action action, CancellationToken token)
{
Action executeAction = null;
executeAction = () =>
{
if (token.IsCancellationRequested)
return;
try
{
action();
if (token.IsCancellationRequested)
return;
AddWork(interval, executeAction, token);
}
catch (OperationCanceledException) { }
catch (Exception x)
{
_log.Error(x,"DedicatedThreadScheduler failed to execute action");
}
};
AddWork(initialDelay, executeAction, token);
}