我想为我的Windows Phone应用程序创建一个计划任务代理。我跟着这个link。但似乎背景任务错误地退出了。以下是一些细节:
TestApp (Windows Phone Silverlight 8.1)
和ScheduledTaskAgent1 (Windows Phone Silverlight 8.1)
。ScheduledTaskAgent1
作为TestApp
的参考。我已将以下代码添加到WMAppManifest.xml
中的TestApp
:
<Tasks>
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>
<ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="ScheduledTaskAgent1" Source="ScheduledTaskAgent1" Type="ScheduledTaskAgent1.ScheduledAgent" />
</ExtendedTask>
</Tasks>
在我MainPage.xaml.cs
的{{1}}中,我有以下代码:
TestApp
在我private async void StartPeriodicTask()
{
periodicTask = ScheduledActionService.Find(periodicTaskName) as PeriodicTask;
if (periodicTask != null)
{
try
{
ScheduledActionService.Remove(periodicTaskName);
}
catch (System.Exception)
{
}
}
periodicTask = new PeriodicTask(periodicTaskName);
periodicTask.Description = "Lock Screen Image Changing Task";
periodicTask.ExpirationTime = DateTime.Now.AddDays(14);
try
{
ScheduledActionService.Add(periodicTask);
System.Diagnostics.Debug.WriteLine("Periodic task added.");
#if(DEBUG_AGENT)
System.Diagnostics.Debug.WriteLine("Starting debugging");
ScheduledActionService.LaunchForTest(periodicTaskName, TimeSpan.FromSeconds(15));
System.Diagnostics.Debug.WriteLine("Periodic task is started: " + periodicTaskName);
#endif
}
catch (InvalidOperationException e)
{
if (e.Message.Contains("BNS Error: The action is disabled"))
{
MessageBox.Show("Background agents for this application have been disabled by the user.");
}
}
catch (SchedulerServiceException)
{
System.Diagnostics.Debug.WriteLine("Periodic task added failed.");
}
} /* void StartPeriodicTask() */
的{{1}}中,我有以下简单代码:
ScheduledAgent.cs
ScheduledTaskAgent1
中的其他代码保持不变,因为它是由VS2013自动创建的。
在我启动程序并调用protected override void OnInvoke(ScheduledTask task)
{
System.Diagnostics.Debug.WriteLine("Background task accomplished.");
NotifyComplete();
} /* OnInvoke() */
后,我得到了这些输出:
ScheduledAgent.cs
最后两行显示调用StartPeriodicTask()
方法,但任务错误地退出。
那么,如何正确退出后台任务呢?
任何回复都将不胜感激。