我正在使用C#和xaml構建Windows應用商店應用程序。我需要在一定的時間間隔後刷新數據(從服務器獲取新數據)。我使用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:刷新功能完成其執行
步驟3:間隙爲15分鐘然後轉到步驟1
刷新功能執行。執行完15分鐘後,再次執行。