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 : Refresh 関数が実行されます (任意の時間がかかります)
ステップ 2 : Refresh 関数の実行が完了する
ステップ 3 : 15 分間のギャップの後、ステップ 1 に進みます
リフレッシュ機能が実行されます。実行が終了してから 15 分後に、再度実行されます。