如何取得擱置中的背景工作清單 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
了解如何取得應用程式目前登錄的背景工作清單。 這份清單包括應用程式在先前的前景工作階段期間登錄的背景工作,這樣您就能先行檢查,以免多次重複登錄背景工作。如需詳細資訊,請參閱如何登錄背景工作。
您必須知道的事
技術
先決條件
- 本主題假設您具有登錄背景工作的應用程式,而且該背景工作使用它來登錄控制代碼取消與進度,如同如何處理已取消的背景工作所述。若要快速開始建立背景工作,請參閱快速入門:建立並登錄背景工作。如需條件與觸發程序的深入資訊,請參閱使用背景工作支援應用程式。
指示
步驟 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;
}