共用方式為


如何取得擱置中的背景工作清單 (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;
}

相關主題

快速入門:建立並登錄背景工作

如何登錄背景工作

如何處理已取消的背景工作

如何監視背景工作進度和完成

如何在應用程式資訊清單中宣告背景工作

如何偵錯背景工作

背景工作的指導方針和檢查清單