Udostępnij przez


Użyj wyzwalacza serwisowego

ważne interfejsy API

Dowiedz się, jak używać klasy MaintenanceTrigger do uruchamiania lekkiego kodu w tle, gdy urządzenie jest podłączone.

Utwórz obiekt wyzwalacza konserwacji

W tym przykładzie założono, że masz lekki kod, który można uruchomić w tle, aby ulepszyć aplikację, gdy urządzenie jest podłączone. Ten temat skupia się na MaintenanceTrigger, który jest podobny do SystemTrigger.

Więcej informacji na temat pisania klasy zadań w tle znajduje się w Tworzenie i rejestrowanie zadania w tle w trakcie przetwarzania lub Tworzenie i rejestrowanie zadania w tle poza procesem.

Utwórz nowy obiekt MaintenanceTrigger . Drugi parametr OneShot określa, czy zadanie konserwacji będzie uruchamiane tylko raz, czy będzie okresowo uruchamiane. Jeśli OneShot ma wartość true, pierwszy parametr (FreshnessTime) określa liczbę minut oczekiwania przed zaplanowaniem zadania w tle. Jeśli OneShot ma wartość false, FreshnessTime określa, jak często będzie uruchamiane zadanie w tle.

Uwaga / Notatka

Jeśli FreshnessTime jest ustawiony na mniej niż 15 minut, podczas próby zarejestrowania zadania w tle zostanie zgłoszony wyjątek.

Ten przykładowy kod tworzy wyzwalacz uruchamiany raz na godzinę.

uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);

(Opcjonalnie) Dodawanie warunku

  • W razie potrzeby utwórz warunek zadania w tle, aby kontrolować, kiedy zadanie jest uruchamiane. Warunek uniemożliwia uruchomienie zadania w tle do momentu spełnienia warunku — aby uzyskać więcej informacji, zobacz Ustawianie warunków uruchamiania zadania w tle

W tym przykładzie warunek jest ustawiony na InternetAvailable , aby konserwacja była uruchamiana, gdy Internet jest dostępny (lub gdy stanie się dostępny). Aby uzyskać listę możliwych warunków zadań w tle, zobacz SystemConditionType.

Poniższy kod dodaje warunek do narzędzia do tworzenia zadań konserwacji.

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

Zarejestruj zadanie w tle

  • Zarejestruj zadanie w tle, wywołując funkcję rejestracji zadań w tle. Aby uzyskać więcej informacji na temat rejestrowania zadań w tle, zobacz Rejestrowanie zadania w tle.

Poniższy kod rejestruje zadanie konserwacji. Należy pamiętać, że zakłada się, iż zadanie w tle działa w osobnym procesie niż aplikacja, ponieważ używa się entryPoint. Jeśli zadanie w tle jest uruchamiane w tym samym procesie co aplikacja, nie należy określać elementu entryPoint.

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Maintenance background task example";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);

Uwaga / Notatka

W przypadku wszystkich rodzin urządzeń z wyjątkiem komputerów stacjonarnych, jeśli urządzenie będzie miało mało pamięci, zadania w tle mogą zostać przerwane. Jeśli wyjątek braku pamięci nie zostanie zgłoszony lub aplikacja go nie obsłuży, zadanie w tle zostanie zakończone bez ostrzeżenia i bez wywołania zdarzenia OnCanceled. Pomaga to zapewnić doświadczenie użytkownika aplikacji na pierwszym miejscu. Zadanie w tle powinno być zaprojektowane tak, aby obsługiwało ten scenariusz.

Uwaga / Notatka

Aplikacje platformy uniwersalnej systemu Windows muszą przed zarejestrowaniem dowolnego typu wyzwalacza w tle wywołać RequestAccessAsync.

Aby upewnić się, że aplikacja uniwersalna systemu Windows nadal działa prawidłowo po wydaniu aktualizacji aplikacji, należy wywołać funkcję RemoveAccess , a następnie wywołać metodę RequestAccessAsync po uruchomieniu aplikacji po zaktualizowaniu. Aby uzyskać więcej informacji, zobacz Wytyczne dotyczące zadań w tle.

Uwaga / Notatka

Parametry rejestracji zadań w tle są weryfikowane w momencie rejestracji. Zwracany jest błąd, jeśli którykolwiek z parametrów rejestracji jest nieprawidłowy. Upewnij się, że aplikacja bezpiecznie obsługuje scenariusze, w których rejestracja zadań w tle kończy się niepowodzeniem — jeśli zamiast tego aplikacja zależy od prawidłowego obiektu rejestracji po próbie zarejestrowania zadania, może to spowodować awarię.