Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sesje rozszerzonego wykonywania umożliwiają aplikacji żądanie, aby system działał w określonych scenariuszach, nawet wtedy, gdy w przeciwnym razie byłby kandydatem do zmniejszenia zasobów na urządzeniach zasilanych baterią. Chociaż aplikacje klasyczne nie są automatycznie zawieszane, tryb rozszerzonego wykonywania jest nadal przydatny do sygnalizowania systemowi zamiaru działania.
Ważna
Aplikacje komputerowe nadal działają niezależnie od tego, czy korzystają z trybu rozszerzonego wykonywania. Podstawową zaletą ExtendedExecutionSession w aplikacji klasycznej jest poinformowanie systemu, że Twoja praca jest ważna i nie powinna być przerywana przez mechanizmy oszczędzania energii, takie jak Modern Standby lub tryb oszczędzania baterii.
Kiedy używać rozszerzonego wykonywania zadań
Sesje rozszerzonego wykonywania są najbardziej przydatne w przypadku aplikacji komputerowych:
- Zapisywanie krytycznych danych — zapewnienie ukończenia dużej operacji zapisywania przed wejściem urządzenia w stan wstrzymania.
- Śledzenie lokalizacji — zapewnienie ciągłego przesyłania danych GPS, gdy aplikacja jest zminimalizowana na laptopie.
- Długotrwałe obliczenia — kończenie zadania renderowania, kompilacji lub analizy danych.
W scenariuszach, w których aplikacja desktopowa musi po prostu pozostać uruchomiona (na przykład aplikacja do czatu lub odtwarzacz muzyki), nie potrzebujesz trybu rozszerzonego wykonywania — aplikacja nadal działa normalnie.
Utwórz rozszerzoną sesję wykonywania
Użyj klasy ExtendedExecutionSession :
using Windows.ApplicationModel.ExtendedExecution;
private ExtendedExecutionSession? _session;
private async Task StartExtendedSessionAsync()
{
var session = new ExtendedExecutionSession
{
Reason = ExtendedExecutionReason.Unspecified,
Description = "Completing critical data save"
};
session.Revoked += ExtendedSession_Revoked;
ExtendedExecutionResult result = await session.RequestExtensionAsync();
if (result == ExtendedExecutionResult.Allowed)
{
_session = session;
// Proceed with the long-running work
}
else
{
session.Dispose();
// The system denied the request — handle gracefully
}
}
private void ExtendedSession_Revoked(object sender,
ExtendedExecutionRevokedEventArgs args)
{
// The session was revoked. Save state quickly.
if (args.Reason == ExtendedExecutionRevokedReason.SystemPolicy)
{
// System needs resources — wrap up immediately
}
}
Przyczyny przedłużonego wykonywania
| Przyczyna | Przypadek użycia |
|---|---|
SavingData |
Aplikacja musi ukończyć operację zapisywania |
LocationTracking |
Aplikacja śledzi lokalizację użytkownika |
Unspecified |
Inne długotrwałe prace |
Note
LocationTracking wymaga funkcji location w manifeście aplikacji oraz zgody użytkownika.
Kończ sesję
Po zakończeniu pracy należy usunąć sesję, aby zwolnić żądanie:
private ExtendedExecutionSession? _session;
private void ExtendedSession_Revoked(object sender,
ExtendedExecutionRevokedEventArgs args)
{
}
private void StopExtendedSession()
{
if (_session != null)
{
_session.Revoked -= ExtendedSession_Revoked;
_session.Dispose();
_session = null;
}
}
Różnice w porównaniu z platformą UWP
| Behavior | platforma UWP | Pulpit nawigacyjny |
|---|---|---|
| Purpose | Zapobiega zawieszeniu | Sygnalizuje znaczenie zarządzania energią |
| Aplikacja działa bez niej | Nie — aplikacje UWP są wstrzymywane | Tak — aplikacje klasyczne działają normalnie |
| Odwołanie sesji | Może spowodować zawieszenie | Nie zatrzymuje aplikacji, ale mogą być stosowane oszczędności energii |
SavingData powód |
Uniemożliwia wstrzymanie podczas zapisywania | Ten sam interfejs API, mniej krytyczny, ponieważ aplikacja nie zawiesza się |
Najlepsze praktyki
- Proś o tryb rozszerzonego wykonywania tylko wtedy, gdy masz konkretne zadanie, które nie powinno zostać przerwane przez mechanizmy oszczędzania energii.
- Zawsze obsługuj zdarzenie
Revoked, nawet w aplikacjach komputerowych. - Po zakończeniu pracy należy usunąć sesję.
- Nie przechowuj sesji rozszerzonej na czas nieokreślony — może to mieć wpływ na żywotność baterii urządzenia.