async void SmartDispatcherTimer_Tick(object sender, EventArgs e)
        {
            if (TickTask == null)
            {
                Debug.WriteLine("No task set!");
                return;
            }

            if (IsRunning && !IsReentrant)
            {
                // previous task hasn't completed
                Debug.WriteLine("Task already running");
                return;
            }

            try
            {
                // we're running it now
                IsRunning = true;

                Debug.WriteLine("Running Task");
                await TickTask.Invoke();

                Debug.WriteLine("Task Completed");
            }
            catch (Exception)
            {
                Debug.WriteLine("Task Failed");
            }
            finally
            {
                // allow it to run again
                IsRunning = false;
            }
        }
Пример #2
0
        async void SmartDispatcherTimer_Tick(object sender, object e)
        {
            if (TickTask == null || IsRunning)
            {
                return;
            }

            try {
                IsRunning = true;
                await TickTask.Invoke();
            } finally {
                IsRunning = false;
            }
        }
Пример #3
0
 public void Dispose()
 {
     TickTask.Abort();
     Stop();
 }