Пример #1
0
        public static bool TryGetTimerStartAndDelay(Task delayPromise, out DateTime startTime, out TimeSpan delay)
        {
            if (TryGetTimer(delayPromise, out var timerObject))
            {
                object timerQueueTimer;

                if (TimerQueueTimerAccessor.IsTimerQueueTimer(timerObject))
                {
                    timerQueueTimer = timerObject;
                }
                else if (timerObject is Timer timer)
                {
                    timerQueueTimer = timer.GetTimerQueueTimer();
                }
                else
                {
                    throw new InvalidOperationException("unknown timer type");
                }

                TimerQueueTimerAccessor.GetSettings(timerQueueTimer, out var start, out var initialDelay, out var interval);
                if (start.HasValue && initialDelay.HasValue)
                {
                    startTime = start.Value;
                    delay     = initialDelay.Value;
                    return(true);
                }
            }

            startTime = default(DateTime);
            delay     = default(TimeSpan);
            return(false);
        }
Пример #2
0
 public static bool TryCancelTimer(Task delayPromise)
 {
     if (TryGetTimer(delayPromise, out var timerObject))
     {
         if (TimerQueueTimerAccessor.IsTimerQueueTimer(timerObject))
         {
             TimerQueueTimerAccessor.Close(timerObject);
         }
         else if (timerObject is Timer timer)
         {
             timer.Dispose();
         }
         else
         {
             throw new InvalidOperationException("unknown timer type");
         }
         return(true);
     }
     return(false);
 }
Пример #3
0
 public static void GetCallbackAndState(this Timer timer, out TimerCallback callback, out object state) =>
 TimerQueueTimerAccessor.GetCallbackAndState(timer.GetTimerQueueTimer(), out callback, out state);
Пример #4
0
 public static void SetCallbackAndState(this Timer timer, TimerCallback callback, object state) =>
 TimerQueueTimerAccessor.SetCallbackAndState(timer.GetTimerQueueTimer(), callback, state);
Пример #5
0
 public static void GetSettings(this Timer timer, out DateTime?startTime, out TimeSpan?initialDelay, out TimeSpan?interval) =>
 TimerQueueTimerAccessor.GetSettings(timer.GetTimerQueueTimer(), out startTime, out initialDelay, out interval);