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.