Wykonywanie funkcji okresowo po zakończeniu zadania przez funkcję

Buduję aplikację sklepu Windows przy użyciu C # i xaml. Muszę odświeżyć dane po pewnym czasie (przynieś nowe dane z serwera). Użyłem ThreadPoolTimer, aby okresowo wykonywać moją funkcję odświeżania w następujący sposób:

   TimeSpan period = TimeSpan.FromMinutes(15); 
   ThreadPoolTimer PeriodicTimer =  ThreadPoolTimer.CreatePeriodicTimer(async(source)=> {  
   n++; 
   Debug.WriteLine("hello" + n);
   await dp.RefreshAsync(); //Function to refresh the data
   await Dispatcher.RunAsync(CoreDispatcherPriority.High,
                () =>
                {
                    bv.Text = "timer thread" + n;

                });

        }, period);

To działa poprawnie. Jedynym problemem jest to, co się stanie, jeśli funkcja odświeżania nie zostanie zakończona przed przesłaniem jej następnej instancji do puli wątków. Czy jest jakiś sposób na określenie luki między jego wykonaniem.

Krok 1: Funkcja odświeżania jest wykonywana (zajmuje dowolną ilość czasu)

Krok 2: Funkcja odświeżania kończy wykonywanie

Krok 3: Przerwij na 15 minut, a następnie przejdź do kroku 1

Funkcja odświeżania jest wykonywana. 15 minut po zakończeniu jego wykonywania, wykonuje się ponownie.

questionAnswers(2)

yourAnswerToTheQuestion