2014-11-14 94 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

相關問題