我正在使用 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分钟后,再次执行。