1

まず、PeriodicTaskが数日前にすでに機能していたことから始めましょう。しかし、何か他のことをするために戻ったとき、PeriodicTaskのOnInvokeがもう呼び出されていないことに気付きました。

基本は正しいと思います。既存のPeriodTaskが見つかった場合は削除し、デバッグビルドでのみLaunchForTestを呼び出し、ScheduledAgentがプロジェクトとWMAppManifest.xmlで正しく参照されていることを確認しました。

これが私がPeriodicTaskを設定する方法です:

            try
            {
                PeriodicTask backgroundTask = null;
                backgroundTask = ScheduledActionService.Find(BGTASK_NEW_EPISODES) as PeriodicTask;
                if (backgroundTask != null)
                {
                    ScheduledActionService.Remove(backgroundTask.Name);
                }

                // Start our background agent.
                backgroundTask = new PeriodicTask(BGTASK_NEW_EPISODES);
                backgroundTask.Description = "Foobar";

                ScheduledActionService.Add(backgroundTask);
#if DEBUG
                ScheduledActionService.LaunchForTest(BGTASK_NEW_EPISODES, TimeSpan.FromSeconds(5));
#endif
            }
            catch (InvalidOperationException e)
            {
                if (e.Message.Contains("BNS Error: The action is disabled"))
                {
                    App.showNotificationToast("Background tasks have been disabled from\nsystem settings.");
                }
            }
            catch (Exception) {  }
       }

これが私のWMAppManifest.xmlです。

  <ExtendedTask Name="BackgroundTask">
    <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="PodcatcherBackgroundService" Source="PodcatcherBackgroundService" Type="PodcatcherBackgroundService.ScheduledAgent" /> 
  </ExtendedTask>

アプリを初めてインストールすると、OnInvokeが呼び出されます。しかし、アプリを再起動しても呼び出されません。同じことがデバイスとエミュレータの両方に当てはまります。

また、設定でバックグラウンドタスクが有効になっていて、バッテリーが完全に充電されていることを確認しました(デバイスはWP7デバイスであり、USB経由でPCに接続されています。エミュレーターの場合、もちろんこれは問題ではありません)。

では、次に何を確認すればよいですか?

ありがとう!

4

1 に答える 1

2

わかりました、解決したようです。

場合によってNotifyComplete()は、バックグラウンドタスクを呼び出すのを忘れました。その場合、Windows Phoneは、バックグラウンドワーカーを呼び出す後続の試行を無視しているように見えます。

于 2013-01-19T14:23:06.853 に答える