Ejecutar una función periódicamente después de que la función complete su tarea

Estoy creando una aplicación de Windows Store con C # y xaml. Necesito actualizar los datos después de cierto intervalo de tiempo (traer los nuevos datos del servidor). Utilicé ThreadPoolTimer para ejecutar mi función de actualización periódicamente de la siguiente manera:

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

Esto está funcionando correctamente. El único problema es que, si la función de actualización no se completa antes de enviar la siguiente instancia al grupo de subprocesos. ¿Hay alguna manera de especificar la brecha entre su ejecución.

Paso 1: la función de actualización se ejecuta (toma cualquier cantidad de tiempo)

Paso 2: la función de actualización completa su ejecución

Paso 3: Espacie durante 15 minutos y luego vaya al Paso 1

La función de actualización se ejecuta. 15 minutos después de que finalice su ejecución, se ejecuta de nuevo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta