如何获取待完成后台任务的列表 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
介绍如何获取你的应用当前注册的后台任务列表。 此列表包含之前的前台会话期间应用注册的后台任务,以便你可以在潜在的多次重新注册后台任务前进行检查。有关详细信息,请参阅如何注册后台任务。
你需要了解的内容
技术
先决条件
- 本主题假定你拥有一个注册后台任务的应用,它注册的后台任务处理取消和进度,如如何处理取消的后台任务中所述。若要快速构建后台任务,请阅读快速入门:创建和注册后台任务。有关条件和触发器的详细信息,请参阅使用后台任务支持应用。
说明
步骤 1:
应用程序当前已注册的后台任务列表保留在 Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks 属性中。使用 while 循环遍历此列表并查找后台任务的名称。
例如,后台任务示例使用以下代码,在尝试注册之前检查服务完成后台任务是否已注册:
//
// Check whether the servicing-complete background task is already registered.
//
var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
var cur = iter.current.value;
if (cur.name === BackgroundTaskSample.servicingCompleteTaskName) {
BackgroundTaskSample.updateBackgroundTaskStatus(BackgroundTaskSample.servicingCompleteTaskName, true);
return;
}
hascur = iter.moveNext();
}
步骤 2:
用来注册后台任务的应用可能会在多种情况下查找注册。你可以通过创建一个根据名称查找后台任务的函数来简化此任务。例如,如果此函数找不到所需的任务,它会返回 null,以便你的应用可以确定是否注册此任务。
下面的函数可以用在你的应用中:
//
// Check for a registration of the named background task. If one exists,
// return it.
//
function FindTask(taskName) {
var taskRegistered = false;
var background = Windows.ApplicationModel.Background;
var iter = background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
var cur = iter.current.value;
if (cur.name === taskName) {
//
// The task is registered, return it.
//
return cur;
}
hascur = iter.moveNext();
}
//
// The task was not found. Return null.
//
return null;
}