public void Execute()
{
if (_action != null && !IsCanceled)
{
_action(_scheduler.UtcNow, (float) (_scheduler.UtcTimeStamp - _lastExecutionEpoch));
}
if (Recurring)
{
_lastExecutionEpoch = _scheduler.UtcTimeStamp;
_lastExecutionNormEpoch = NextExecutionEpoch;
NextExecutionEpoch = _lastExecutionNormEpoch + Interval.TotalSeconds;
}
else
{
Dispose();
}
}