バックグラウンド タスク(エージェントではありません)を使用する WP8.1 SL アプリを開発しています。
私のタスクは TimerTrigger によってトリガーされます - 30 分ごとに 1 回 (Windows Phone の最小間隔だと思いますよね?)。それは多くの作業を行っており、何らかの理由で中断されることがあります。つまり、途中で停止します。何が起こっているのかをログに記録し、タスクの作業が基本的に毎回同じであるため、それが途中であることを知る方法です。
昨日、アプリを自分のデバイスに展開して新しいアプローチをテストしましたが、すべてが正常に機能していました。バックグラウンド タスクは、開始されるたびにすべてを実行していました。魅力的に機能しました。今日、私のデバイスはソフト リセットが必要だったので、それを行いました (何も機能していませんでした。WP8.1 にアップデートしてから時々発生します)。その瞬間から、前のアプローチと同様に、バックグラウンド タスクは毎回途中で中断されます。
これを引き起こす可能性のあるアイデアはありますか?私はそれがソフトリセットに関連している可能性があると考えています.なぜなら-それ以前の成功率は100%、その後は0%だからです.
私がこれまでに試したこと:
エラーをログに記録し、すべてに try-catch を使用し、UnobservedException イベントとタスクの Canceled イベントをサブスクライブし、中断カウントをログに記録していますが、これらはどれも役に立ちません。エラーは出ていないようで、中断も中止もされていません。
現在のメモリ使用量を時々記録していますが、約 16 ~ 17MB です。私のデバイスでは、制限は 30MB のはずなので、それは問題ではないと思います。
可能な限り RequestAccessAsync を呼び出しています。1回で十分だと思いましたが、そのソフトリセットの問題から、問題の原因であるかどうかを確認するために、1〜2か所に配置することにしました。そうではないか、少なくともこれで問題は解決しませんでした。
よくわからないこと:
- タスクが消費した CPU 時間を確認する方法がわかりません。そうするための良い/信頼できる方法が見つかりません。また、タスクが途中で停止する理由を説明する情報が見つからない場合もあれば、正常に機能する場合もあります。
バックグラウンド タスクが途中で停止することがある理由はありますか? アプリを修正/改善する方法を決定するのに本当に苦労していますが、それはまったく機能します。
ありがとう。