UWPでバックグラウンド処理を時間間隔で起動2021年02月09日 11:41

UWPでバックグラウンド処理を用意し、一定時間間隔で起動する手順は、MSやStack Overflowあたりでも、かなり詳しく説明されている。とはいえ、あちこちの情報を整理して実装する必要があるので、備忘までに。

Register

バックグラウンド処理の登録。
・時間間隔起動なのでTimeTriggerの用意。(L.166)
・サイトから画像を取り込むので、インターネットが使えることを条件に設定。(L.171)
・UIが開いているときは、情報を更新する必要があるので、完了時のハンドラを登録。(L.178)
・バックグラウンド処理に渡す情報を、ApplicationData.Current.LocalSettingsを介して渡す。ここでは壁紙に設定する火山のコード。(L.180)

BG Run

バックグラウンド処理の本体。起動するとRunが呼び出される。

OnCompleted

バックグラウンド処理が完了したときに、ハンドラから呼び出される処理。別スレッドにいるので、Dispatcher.RunAsyncで処理。UIを更新。

AppResuming

アプリのUIが最小化されているときは、フォアグランドの処理は中断(Suspend)されているので、上のOnCompletedでは、処理されない。中断が解除されたときにハンドラから呼び出される処理にて、改めてUIを更新。

UpdateUI

UIの更新処理。バックグラウンド処理が更新した情報をApplicationData.Current.LocalSettingsを介して返してもらう。基本的な型しかサポートされていないので、Classの中身をバラして設定。ここでは、ダウンロードして保存した、壁紙に用いる画像ファイルの情報。フォアグラウンドとバックグラウンドでは、同じClassでも異なるobjectになっているので、情報を同期する。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://c5d5e5.asablo.jp/blog/2021/02/09/9345541/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。