Korzystanie z rozszerzonego wykonywania w aplikacjach klasycznych pakietu Zestaw SDK do aplikacji systemu Windows

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.