首先让我说几天前我已经让 PeriodicTask 工作了,但是当我回来做其他事情时,我注意到 PeriodicTask 的 OnInvoke 不再被调用。
我认为我做的基本正确:如果找到现有的 PeriodTask,则删除现有的 PeriodTask,仅在调试构建中调用 LaunchForTest,并且我检查了项目和 WMAppManifest.xml 中是否正确引用了 ScheduledAgent。
这就是我设置 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。对于模拟器,当然,这无关紧要)。
那么接下来我应该检查什么?
谢谢!