2014-11-14 91 views
3

为了在WP 8.1 Silverlight中实现ScheduledAgent,我在this link之后。Windows Phone 8.1(Silverlight)中的后台代理

步骤: -

编辑WMAppManifest.xaml

<Tasks> 
    <DefaultTask Name="_default" NavigationPage="/View/StartPage.xaml" /> 
    <ExtendedTask Name="BackgroundTask"> 
    <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="ScheduledTaskAgent2" Source="ScheduledTaskAgent2" Type="ScheduledTaskAgent2.ScheduledAgent" /> 
    </ExtendedTask> 
</Tasks> 

有针对性的8.1版本增加了新的项目ScheduledAgent。 :现在 enter image description here

我ScheduledAgent类

#define DEBUG_AGENT 
using System; 
using System.Diagnostics; 
using System.Windows; 
using Microsoft.Phone.Scheduler; 
using Microsoft.Phone.Shell; 

namespace ScheduledTaskAgent2 
{ 
    public class ScheduledAgent : ScheduledTaskAgent 
    { 

     protected override void OnInvoke(ScheduledTask task) 
     { 

#if DEBUG_AGENT 
      ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(60)); 
#endif 
      NotifyComplete();   

      } 
    } 
} 

我的代码启动代理

public const string PeriodicTaskName = "ScheduledTaskAgent2"; 
private PeriodicTask _periodicTask; 

    private void StartPeriodicAgent() 
    { 
     _isPeriodicTaskStarted = true; 

     _periodicTask = ScheduledActionService.Find(PeriodicTaskName) as PeriodicTask; 

     if (_periodicTask != null) 
     { 
      RemoveAgent(PeriodicTaskName); 
     } 

     _periodicTask = new PeriodicTask(PeriodicTaskName) {Description = "periodic task."}; 

     try 
     { 
      ScheduledActionService.Add(_periodicTask); 

#if(DEBUG_AGENT) 
      ScheduledActionService.LaunchForTest(PeriodicTaskName, TimeSpan.FromSeconds(60)); 
#endif 
     } 
     catch (Exception exception){ } 
    }   

    private static void RemoveAgent(string name) 
    { 
     try 
     { 
      ScheduledActionService.Remove(name); 
     } 
     catch (Exception){} 
    } 

现在这一切,我都试过了后台代理。这不是调用OnInvoke()方法(至少在调试模式下)

注意:我也添加了对ScheduledTaskAgent2项目的引用。

有没有人实现的ScheduleAgent在WP 8.1(Silverlight的)

是否支持呢?

回答

5

我得到了解决方案这是完全可行的解决方案只是复制粘贴它。不能直接从文档中获取它。只需在Package.appxmanifest文件中添加此扩展。您可以通过right click => viewcode选项打开它。

<Extension Category="windows.backgroundTasks" EntryPoint="AgHost.BackgroundTask"> 
     <BackgroundTasks> 
     <Task Type="systemEvent" /> 
     <Task Type="timer"/> 
     </BackgroundTasks> 
    </Extension> 
+0

你救了我们的生活!我们在这里遇到了同样的问题,我们发现EntryPoint是错误的。有了这个入口点,我们现在可以进行调试。 谢谢! – Fabiano 2015-01-07 19:19:17

相关问题