/// <summary>Starts a repeating timer that will be invoked indefinitely at the specified interval.</summary> /// <param name="interval">The timer interval.</param> /// <param name="callback">The timer callback.</param> public void Repeat(TimeSpan interval, GuiTimerCallback callback) { _startTimer(interval, -1, callback); }
/// <summary>Starts a repeating timer that will be invoked for a finite number of times at the specified interval.</summary> /// <param name="interval">The timer interval in milliseconds.</param> /// <param name="count">The number of times that the timer will be invoked.</param> /// <param name="callback">The timer callback.</param> public void Repeat(double interval, int count, GuiTimerCallback callback) { _startTimer(interval.MilliSeconds(), Math.Max(count, -1), callback); }
private void _stopTimer() { if (_timer != null) { _timer.Stop(); _timer = null; _stoppedOn = DateTime.Now.Ticks; } _interval = TimeSpan.Zero; _callback = null; }
/// <summary>Starts a repeating timer that will be invoked indefinitely at the specified interval.</summary> /// <param name="interval">The timer interval in milliseconds.</param> /// <param name="callback">The timer callback.</param> public void Repeat(double interval, GuiTimerCallback callback) { _startTimer(interval.MilliSeconds(), -1, callback); }
/// <summary>Starts a timer that will be invoked when the application is idle.</summary> /// <param name="callback">The timer callback.</param> /// <returns>The <see cref="GuiTimer"/> object that can be used for stopping the timer. </returns> public static GuiTimer StartOnIdle(GuiTimerCallback callback) { var timer = new GuiTimer(DispatcherPriority.ApplicationIdle); timer.Start(callback); return timer; }
private void _startTimer(TimeSpan timespan, int maxCount, GuiTimerCallback callback) { Assumption.IsTrue(Application.Current.CheckAccess(), "A Gui timer can only be invoked from the Gui thread"); Assumption.NotNull(callback); Assumption.IsTrue(timespan.Milliseconds >= 0, "Timer interval cannot be negative"); _stopTimer(); Count = 0; MaxCount = maxCount; IsInfinite = (maxCount < 0); _callback = callback; _interval = timespan; _timer = new DispatcherTimer(Priority); _timer.Interval = _interval; _timer.Tick += _onTimerTick; _startedOn = DateTime.Now.Ticks; _timer.Start(); }
/// <summary>Starts a timer that will be invoked after the next layout and rendering pass.</summary> /// <param name="callback">The timer callback.</param> /// <returns>The <see cref="GuiTimer"/> object that can be used for stopping the timer. </returns> public static GuiTimer StartAfterRender(GuiTimerCallback callback) { var timer = new GuiTimer(DispatcherPriority.Loaded); timer.Start(callback); return timer; }
/// <summary>Starts a timer that will be invoked before the next layout and rendering pass.</summary> /// <param name="callback">The timer callback.</param> /// <returns>The <see cref="GuiTimer"/> object that can be used for stopping the timer. </returns> public static GuiTimer StartBeforeRender(GuiTimerCallback callback) { var timer = new GuiTimer(DispatcherPriority.DataBind); timer.Start(callback); return timer; }
/// <summary>Starts a timer that will be invoked after a specified delay.</summary> /// <param name="delay">The timer delay.</param> /// <param name="callback">The timer callback.</param> /// <returns>The <see cref="GuiTimer"/> object that can be used for stopping the timer. </returns> public static GuiTimer StartAfter(TimeSpan delay, GuiTimerCallback callback) { var timer = new GuiTimer(); timer.Start(delay, callback); return timer; }
/// <summary>Starts a timer that will be invoked after a specified delay.</summary> /// <param name="delay">The timer delay.</param> /// <param name="callback">The timer callback.</param> public void Start(TimeSpan delay, GuiTimerCallback callback) { _startTimer(delay, 1, callback); }
/// <summary>Starts a timer that will be invoked after a specified delay.</summary> /// <param name="delay">The timer delay in milliseconds.</param> /// <param name="callback">The timer callback.</param> public void Start(double delay, GuiTimerCallback callback) { _startTimer(delay.MilliSeconds(), 1, callback); }
/// <summary>Starts a timer that will be invoked at the priority /// (i.e., after all other non-idle operations are completed).</summary> /// <param name="callback">The timer callback.</param> public void Start(GuiTimerCallback callback) { _startTimer(TimeSpan.Zero, 1, callback); }
/// <summary>Starts a repeating timer that will be invoked for a finite number of times at the specified interval.</summary> /// <param name="interval">The timer interval.</param> /// <param name="count">The number of times that the timer will be invoked.</param> /// <param name="callback">The timer callback.</param> public void Repeat(TimeSpan interval, int count, GuiTimerCallback callback) { _startTimer(interval, Math.Max(count, -1), callback); }