计划任务出现两次

时间:2012-01-11 01:01:48

标签: windows-phone-7 windows-phone-7.1

我提交失败(甚至无法通过上传验证),因为我的后台代理创建了两个实例,但我无法弄清楚原因。

以下是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)最初并不存在,我添加它希望它会阻止第二个实例的创建。有时候,当我卸载时,仍然会关闭一个后台任务,我必须关闭手机并重新启动才能让它消失。

1 个答案:

答案 0 :(得分:10)

我正在处理的项目存在同样的问题 出于某种原因,我在我的WMAppManifest.xml中定义了两次backgroundtask 检查WMAppManifest.xml,看看你是否也定义了两次。