Windows phone 如何重复后台任务计时器?

Windows phone 如何重复后台任务计时器?,windows-phone,windows-phone-8.1,Windows Phone,Windows Phone 8.1,我有一个Windows Phone项目。我希望后台任务运行三次,并在运行三次后自动注销 我的代码: var taskRegisted = false; var exampleTaskName = "TimerRegister"; foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == exampleTaskName) { taskRegisted = true;

我有一个Windows Phone项目。我希望后台任务运行三次,并在运行三次后自动注销

我的代码:

var taskRegisted = false;
var exampleTaskName = "TimerRegister";

foreach (var task in BackgroundTaskRegistration.AllTasks)
{
   if (task.Value.Name == exampleTaskName)
   {
      taskRegisted = true;
      break;
   }
}

if (taskRegisted == false)
{
   var builder = new BackgroundTaskBuilder();
   //var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);
   var trigger = new TimeTrigger(15, false);

   builder.Name = exampleTaskName;
   builder.TaskEntryPoint = typeof(ToastTask).FullName;
   builder.SetTrigger(trigger);

   var taskRegistion = builder.Register();

   taskRegistion.Completed += taskRegistion_Completed;
}

我的代码每十五分钟运行一次,我希望它只运行三次。

不幸的是,无法限制后台任务以您描述的方式运行的次数。TimeTrigger确实具有“OneShot”属性,允许您仅运行一次任务,但不能将其配置为运行X次,即1次或无限次


我的建议是跟踪任务的运行次数。只需将任务已运行的次数写入独立存储中的文件,然后在任务启动时检查该值。执行此操作后,如果已运行3次,则返回run()方法,而不执行任何真正的“工作”。

在run方法(BackgroundTask的)中注销BackgroundTask没有任何障碍。例如,以下代码应运行三次,然后自行注销:

//运行方法中的代码:
int nPreviousRuns=0;
var settings=ApplicationData.Current.LocalSettings;
if(settings.Values.ContainsKey(“numberOfRuns”))nrPreviousRuns=(int)settings.Values[“numberOfRuns”];
如果(nrPreviousRuns>=3)//maksimum运行次数
{
//注销任务
foreach(BackgroundTaskRegistration.AllTasks中的var cur)
如果(cur.Value.Name==“yourBGTaskName”)cur.Value.Unregister(true);
设置。值。删除(“numberOfRuns”);
}
其他设置。值[“numberOfRuns”]=++nPreviousRuns;