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。 :現在
我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的)
是否支持呢?
你救了我們的生活!我們在這裏遇到了同樣的問題,我們發現EntryPoint是錯誤的。有了這個入口點,我們現在可以進行調試。 謝謝! – Fabiano 2015-01-07 19:19:17