2

バックグラウンド エージェントを使用してライブ タイルを更新する Windows Phone 7 アプリケーションに取り組んでいます。私が遭遇した問題は、バックグラウンド エージェントの無効化と再有効化に関係しています。ユーザーは、設定 (設定 - アプリケーション - バックグラウンド タスク) で特定のアプリケーションのバックグラウンド エージェントを無効にすることができます。

バックグラウンド エージェントが無効になっている場合、次のコードを使用してエージェントをスケジュールしようとすると、「 BNS エラー: アクションが無効です 」というメッセージとともに InvalidOperationException の予期される動作が発生します。

ScheduledActionService.LaunchForTest(PeriodicTaskName, TimeSpan.FromSeconds(20));      

ユーザーが設定メニューに戻り、チェックボックス「次回このアプリを開いたときにバックグラウンドタスクをオンに戻す」にチェックを入れても、同じ例外が発生します。

私の質問は、再有効化されたタスクを実行するにはどうすればよいですか?

MSDNのドキュメントでは、無効になったタスクの動作について説明していますが、それらを再度有効にする方法について説明しています。

4

1 に答える 1

0

まず第一にScheduledActionService.LaunchForTest、デバッグ シナリオの外で呼び出すべきではありません。

次に、スケジュールされたタスクを無効にできる理由は 3 つだけです。

  1. ユーザーが手動で無効にしました
  2. スマートフォンの電源が切れたため、バッテリー セーバーの使用を開始しました。十分な電源がオンになっているときに、次にアプリケーションを起動すると、タスクが再度有効になります。
  3. あなたのタスクは を呼び出さなかったためNotifyComplete()、無効になりました。

3.の場合、タスクを再作成する必要があります。これは通常、ユーザーがアプリケーションからライブ タイルを再作成することを意味します。もちろんお勧めではありません!

NotifyComplete()したがって、コードを調べて、が常に呼び出されていることを確認し、 の使用を停止することをお勧めしますScheduledActionService.LaunchForTest

于 2011-09-05T12:33:36.773 に答える