使用背景工作回應系統事件
重要 API
了解如何建立回應 SystemTrigger 事件的背景工作。
本主題假設您已經為應用程式撰寫了背景工作類別,並且該工作需要在系統觸發的事件 (例如網際網路可用性變化或使用者登入時) 中執行。 本主題的重點是 SystemTrigger 類別。 如需撰寫背景工作類別的詳細資訊,請參閱建立及註冊同處理序的背景工作或建立及註冊跨處理序的背景工作。
建立 SystemTrigger 物件
在您的應用程式程式碼中,建立新的 SystemTrigger 物件。 第一個參數 triggerType 會指定將啟動此背景工作的系統事件觸發程序的類型。 如需事件類型清單,請參閱 SystemTriggerType。
第二個參數 OneShot 會指定背景工作只會在下一次發生系統事件時執行一次,還是每次系統事件發生,直到取消註冊工作為止。
下列程式碼會指定每當網際網路可供使用時,背景工作就會執行:
SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);
登錄背景工作
呼叫背景工作註冊函式來註冊背景工作。 如需註冊背景工作的詳細資訊,請參閱註冊背景工作。
下列程式碼會針對跨處理序的背景程序註冊背景工作。 如果您呼叫在與主應用程式相同的程序中執行的背景工作,則不會設定 entrypoint
:
string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName = "Internet-based background task";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName = "Internet-based background task";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
注意
通用 Windows 平台應用程式註冊任何背景觸發程序類型之前,必須呼叫 RequestAccessAsync。
為了確保通用 Windows 應用程式在您發行應用程式更新之後繼續正常執行,您必須呼叫 RemoveAccess,然後在應用程式更新後啟動時呼叫 RequestAccessAsync。 如需詳細資訊,請參閱背景任務指南。
注意
註冊時會驗證背景工作註冊參數。 如果任何註冊參數無效,則會傳回錯誤。 請確定您的應用程式可正常處理背景工作註冊失敗的案例,如果您的應用程式在嘗試註冊工作之後依賴有效的註冊物件,它可能會當機。
備註
若要查看作用中的背景工作註冊,請下載背景工作範例。
背景工作可以執行以回應 SystemTrigger 和 MaintenanceTrigger 事件,但您仍然需要在應用程式資訊清單中宣告背景工作。 您也必須在註冊任何背景工作類型之前呼叫 RequestAccessAsync。
應用程式可以註冊背景工作來回應 TimeTrigger、PushNotificationTrigger 和 NetworkOperatorNotificationTrigger 事件,讓它們能夠與使用者提供即時通訊,即使應用程式不在前景。 如需詳細資訊,請參閱使用背景工作支援應用程式。