Language: HTML | XAML

如何取得擱置中的背景工作清單 (XAML)

Applies to Windows and Windows Phone

了解如何取得應用程式目前登錄的背景工作清單。 這份清單包括應用程式在先前的前景工作階段期間登錄的背景工作,這樣您就能先行檢查,以免多次重複登錄背景工作。如需詳細資訊,請參閱如何登錄背景工作

您必須知道的事

技術

先決條件

指示

步驟 1:

應用程式目前登錄的背景工作清單保留在 BackgroundTaskRegistration.AllTasks 屬性中。

以下程式碼示範如何重複 AllTasks 屬性:


foreach (var cur in BackgroundTaskRegistration.AllTasks)
{
    // TODO: Perform operations relevant to registered background tasks, such as registering event handlers.
}

步驟 2:

取得應用程式目前登錄的背景工作清單本身並沒有太大的功用,您將需要應用程式使用該資訊來做一些有用的事情。請參閱下方的範例程式碼片段,並另請參閱如何監視背景工作進度和完成以取得詳細資訊。

例如,背景工作範例使用下列程式碼檢查 SampleBackgroundTask (沒有條件) 是否已經登錄,再嘗試登錄它:


/// <summary>
/// Registers a background task for the servicing-complete system event.
/// This event occurs when the application is updated.
/// </summary>
public static void RegisterServicingCompleteTask()
{
    //
    // Check whether the servicing-complete background task is already registered.
    //
    foreach (var cur in BackgroundTaskRegistration.AllTasks)
    {
        if (cur.Value.Name == ServicingCompleteTaskName)
        {
            //
            // The task is already registered.
            //
            UpdateBackgroundTaskStatus(ServicingCompleteTaskName, true);
            return;
        }
    }

    //
    // The servicing-complete background task is not already registered.
    //
    RegisterBackgroundTask(ServicingCompleteTaskEntryPoint,
                            ServicingCompleteTaskName,
                            new SystemTrigger(SystemTriggerType.ServicingComplete, false),
                            null);
}

步驟 3:

登錄背景工作的應用程式很可能會在超過一種狀況中查詢登錄。您可建立函式以根據背景工作的名稱來尋找背景工作,讓工作更輕鬆。例如,如果此函式找不到工作並傳回 null,您的應用程式就可判斷是否要登錄工作。

可在您的應用程式中使用下列函式:


// 
// Check for a registration of the named background task. If one exists,
// return it.
// 
public static BackgroundTaskRegistration FindTask(string taskName)
{
    foreach (var cur in BackgroundTaskRegistration.AllTasks)
    {
        if (cur.Value.Name == taskName)
        {
            // 
            // The task is registered, return it.
            // 
                    
            return (BackgroundTaskRegistration)cur.Value;
        }
    }
    

    // 
    // The task was not found. Return null.
    // 

    return null;
}

相關主題

快速入門:建立並登錄背景工作
如何登錄背景工作
如何處理已取消的背景工作
如何監視背景工作進度和完成
如何在應用程式資訊清單中宣告背景工作
How to debug a background task
背景工作的指導方針和檢查清單

 

 

顯示:
© 2014 Microsoft