Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ę.
Tematy pokrewne
- Utwórz i zarejestruj zadanie w tle w ramach procesu.
- Tworzenie i rejestrowanie zadania w tle poza procesem
- Deklarowanie zadań w tle w manifeście aplikacji
- Zarządzanie anulowanym zadaniem w tle
- Monitorowanie postępu i ukończenia zadania w tle
- Zarejestruj zadanie w tle
- Reagowanie na zdarzenia systemowe za pomocą zadań w tle
- Ustawianie warunków uruchamiania zadania w tle
- Zaktualizuj dynamiczny kafelek za pomocą zadania w tle
- Uruchamianie zadania w tle na czasomierzu
- Wytyczne dotyczące zadań w tle
- Debugowanie zadania w tle
- Jak wyzwalać zdarzenia związane z wstrzymywaniem, wznawianiem oraz działaniem w tle w aplikacjach UWP (podczas debugowania)