Executando uma função periodicamente após a conclusão da tarefa

Eu estou construindo um aplicativo de loja do windows usando c # e xaml. Eu preciso atualizar os dados após determinado intervalo de tempo (trazer os novos dados do servidor). Eu usei ThreadPoolTimer para executar a minha função de atualização periodicamente da seguinte forma:

   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);

Isso está funcionando corretamente. O único problema é que, se a função de atualização não for concluída antes de sua próxima instância ser enviada ao conjunto de encadeamentos. Existe alguma maneira de especificar a lacuna entre sua execução.

Etapa 1: A função de atualização é executada (demora algum tempo)

Etapa 2: A função de atualização conclui sua execução

Passo 3: Gap por 15mins, então vá para o Passo 1

Função de atualização é executada. 15 minutos depois que sua execução termina, ele é executado novamente.

questionAnswers(2)

yourAnswerToTheQuestion