Windows phone 7 ScheduledActionService.LaunchForTest不调用ScheduledTaskAgent';首次安装后,s仅会唤醒

Windows phone 7 ScheduledActionService.LaunchForTest不调用ScheduledTaskAgent';首次安装后,s仅会唤醒,windows-phone-7,scheduled-tasks,windows-phone-8,windows-phone,Windows Phone 7,Scheduled Tasks,Windows Phone 8,Windows Phone,让我先说几天前PeriodicTask已经开始工作了,但当我回来做其他事情时,我注意到PeriodicTask的OnInvoke不再被调用 我认为我做的基本操作是正确的:删除现有的PeriodTask(如果找到),仅在调试构建中调用LaunchForTest,并且我已经检查了ScheduledAgent是否在项目和WMAppManifest.xml中正确引用 这是我如何设置PeriodicTask的: 试试看 { PeriodicTask backgroundTask=null; backgro

让我先说几天前PeriodicTask已经开始工作了,但当我回来做其他事情时,我注意到PeriodicTask的OnInvoke不再被调用

我认为我做的基本操作是正确的:删除现有的PeriodTask(如果找到),仅在调试构建中调用LaunchForTest,并且我已经检查了ScheduledAgent是否在项目和WMAppManifest.xml中正确引用

这是我如何设置PeriodicTask的:

试试看
{
PeriodicTask backgroundTask=null;
backgroundTask=ScheduledActionService.Find(BGTASK\u NEW\u剧集)作为PeriodicTask;
if(backgroundTask!=null)
{
ScheduledActionService.Remove(backgroundTask.Name);
}
//启动我们的后台代理。
背景任务=新周期任务(BGTASK\u新事件);
backgroundTask.Description=“Foobar”;
ScheduledActionService.Add(backgroundTask);
#如果调试
ScheduledActionService.LaunchForTest(BGTASK_NEW_剧集,TimeSpan.FromSeconds(5));
#恩迪夫
}
捕获(无效操作异常)
{
if(例如,Message.Contains(“BNS错误:操作已禁用”))
{
App.showNotificationToast(“后台任务已从系统设置中禁用。”);
}
}
捕获(异常){}
}
以下是我的WMAppManifest.xml:

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

当我第一次安装应用程序时,会调用OnInvoke。但是如果我重新启动应用程序,它不会被调用。设备和模拟器也是如此

我还验证了后台任务已在设置中启用,并且我有一个充满电的电池(该设备是WP7设备,通过USB连接到PC。当然,对于模拟器来说,这并不重要)

那么接下来我应该检查什么呢


谢谢

好吧,看来我已经解决了


在某些情况下,我忘记在后台任务中调用
NotifyComplete()
。在这种情况下,Windows Phone似乎忽略了调用后台工作程序的后续尝试。

此外,进程本身(HeadlessHost.exe)在您调用
NotifyComplete
(或
Abort
)之前不会退出,并且在旧任务退出之前不会启动新任务副本。感谢您的评论!我必须再添加一个问题进行调试;你知道在调试后台任务时,如果我怀疑出了什么问题,最好的“清理”状态的方法是什么吗?重新安装应用程序是否足够,或者是否有什么东西一直挂起?卸载应用程序肯定会终止任何正在运行的进程,并清除隔离的存储。我遇到了这个问题,卸载应用程序是不够的-它只有在我卸载应用程序然后重新启动手机后才起作用。