我提交失败(甚至无法通过上传验证),因为我的后台代理创建了两个实例,但我无法弄清楚原因。
以下是app.xaml.cs中的方法(我也试过将它定位在MainPageVM.cs和MainPage.xaml.cs中,结果相同)
private void RegisterBackgroundTask()
{
var taskName = "xxUpdater";
var oldTask = ScheduledActionService.Find(taskName) as PeriodicTask;
if (oldTask != null)
{
ScheduledActionService.Remove(taskName);
}
PeriodicTask task = new PeriodicTask(taskName);
task.Description = Strings.xxBackgroundTaskDescription;
oldTask = ScheduledActionService.Find(taskName) as PeriodicTask;
if (oldTask == null)
{
ScheduledActionService.Add(task);
}
//ScheduledActionService.LaunchForTest(taskName, TimeSpan.FromSeconds(60));
}
以下是Application_Launching中的调用:
private void Application_Launching(object sender, LaunchingEventArgs e)
{
{ RegisterBackgroundTask(); }
}
应用程序第一次运行时,我退出,查看,并且有一项任务。然后我再次运行,单步执行,删除调用关闭任务(而不是删除它)。当它进入add调用时,它不仅会打开原始任务,而且还会添加另一个。从那时起,当我退出并重新启动应用程序时,删除将关闭一个实例,然后离开另一个实例,并且Add调用将其重新打开。除非在重建或卸载之后,否则oldTask为null。
if(oldTask == old)最初并不存在,我添加它希望它会阻止第二个实例的创建。有时候,当我卸载时,仍然会关闭一个后台任务,我必须关闭手机并重新启动才能让它消失。
答案 0 :(得分:10)
我正在处理的项目存在同样的问题 出于某种原因,我在我的WMAppManifest.xml中定义了两次backgroundtask 检查WMAppManifest.xml,看看你是否也定义了两次。