ScheduledTaskAgent for Windows Phone 8和7.1之间的差异

时间:2012-12-19 16:21:49

标签: silverlight visual-studio-2012 windows-phone-7.1 scheduled-tasks windows-phone-8

我有一个大问题。

我为Windows Phone 7.1+编写了一个应用程序,它也在Windows Phone Store上发布: 此应用程序适用于Windows Phone 7.1和Windows Phone 8,并且在应用程序提交过程中没有任何问题(谁还声明我的应用程序与Windows Phone 7.5以后的任何操作系统完全兼容)。

这个问题只与我的Scheduled Agent有关,它在Windows Phone Mango(7.1)上完美运行,但它在Windows Phone 8上根本没有启动(我还在真实设备上测试了我的应用程序,同时使用OS')。

当我升级到 Visual Studio 2012(Express for Windows Phone)时,我注意到可以添加两种不同类型的ScheduledTaskAgent项目:一种用于Windows Phone 7.5一个用于Windows Phone 8(显然在Visual Studio 2010中并非如此......我使用了唯一可用的=第一个)!

  1. 你认为这可能是预定代理在WP8中不起作用的原因吗?
  2. 两种项目类型有什么区别?
  3. 如何管理(代码我的意思)这个类型的两个项目?有可能吗?
  4. 如何选择注册哪个任务(参见下面的代码)?
  5. 提交过程是否会因两个ScheduledTaskAgent项目而失败(我认为是这样)?
  6. 当我在启动时注册我的任务时,这是代码的关键部分:

    PeriodicTask newTask = new PeriodicTask("MyTaskID");
    
    newTask.Description = "my Description";
    
    ScheduledActionService.Add(newTask);
    
    #if DEBUG
    Microsoft.Phone.Scheduler.ScheduledActionService.LaunchForTest("MyTaskID", TimeSpan.FromSeconds(5));
    #endif
    

    提前谢谢。

2 个答案:

答案 0 :(得分:2)

两种项目类型之间的唯一区别是:(1)Windows Phone 8一个目标是Windows Phone 8而不是7.1;(2)它引用Windows Phone 8 SDK而不是Windows Phone 7 dll。

我有一个应用程序,我有两个项目(7.1和8.0)。我还有两个后台代理项目(7.1和8.0),我使用链接文件在它们之间共享代码。我引用了8.0项目中的8.0代理和7.1项目中的7.1代理。我使用this example作为拥有两个版本代码的最佳实践。

您不想引用两个代理,因为这不起作用。

如果你删除#if DEBUG,你的代理会在调试时被调用吗?

答案 1 :(得分:0)

首先确保您在应用清单文件中获得了正确的引用。

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

其次,必须在主应用程序项目中引用代理库 第三,确保不超过允许的运行时间或内存分配。在WP8中,后台代理的上限提高到11MB。此外,注册后台任务的应用程序存在限制,因此您的任务可能没有使用bg代理的免费插槽。