Периодическое выполнение функции после завершения функции
Я строю приложение для магазина Windows, используя C # и XAML. Мне нужно обновить данные через определенный промежуток времени (принести новые данные с сервера). Я использовал ThreadPoolTimer, чтобы периодически выполнять мою функцию обновления следующим образом:
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);
Это работает правильно. Единственная проблема заключается в том, что если функция обновления не завершится до того, как ее следующий экземпляр будет отправлен в пул потоков. Есть ли способ указать разрыв между его выполнением.
Шаг 1: выполняется функция обновления (занимает любое количество времени)
Шаг 2: функция Refresh завершает свое выполнение
Шаг 3: Разрыв в течение 15 минут, затем перейдите к шагу 1
Функция обновления выполняется. Через 15 минут после его выполнения он выполняется снова.