Använd utökad körningstid i skrivbordsappar i Windows App SDK

Med utökade körningssessioner kan appen begära att systemet fortsätter att köras för specifika scenarier, även om det annars skulle vara en kandidat för resursminskning på batteridrivna enheter. Även om skrivbordsappar inte pausas automatiskt är utökad körningstid fortfarande användbar för att signalera avsikten till systemet.

Important

Skrivbordsappar fortsätter att köra oavsett om de använder utökad körning eller inte. Den främsta fördelen med ExtendedExecutionSession i en skrivbordsapp är att kommunicera med systemet om att ditt arbete är viktigt och inte bör avbrytas av energisparåtgärder som modernt vänteläge eller batterisparläge.

När du ska använda utökad exekvering

Utökade körningssessioner är mest användbara i skrivbordsappar för:

  • Spara viktiga data – Se till att en stor sparande åtgärd slutförs innan enheten går in i vänteläge.
  • Platsspårning — Fortsätta skicka GPS-data när appen är minimerad på en bärbar dator.
  • Tidskrävande beräkningar – Slutföra en renderings-, kompilerings- eller dataanalysuppgift.

För scenarier där din skrivbordsapp helt enkelt behöver fortsätta köras (till exempel en chattapp eller musikspelare) behöver du inte utökad körning – appen fortsätter att köras normalt.

Skapa en utökad exekveringssession

Använd klassen 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
    }
}

Orsaker till förlängd körning

Reason Användningsfall
SavingData Din app måste slutföra en spara-åtgärd
LocationTracking Appen spårar användarens plats
Unspecified Annat långvarigt arbete

Note

LocationTracking kräver funktionen location i appmanifestet och användarens medgivande.

Avsluta sessionen

När ditt arbete är klart gör du dig av med sessionen för att släppa begäran:

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;
    }
}

Skillnader från UWP

Behavior UWP Desktop
Purpose Förhindrar viloläge Signalvikt för energisparfunktioner
Appen fortsätter att köras utan den Nej – UWP-appar pausas Ja – skrivbordsappar körs normalt
Återkallande av session Kan orsaka avstängning Stoppar inte appen, men energibesparingar kan gälla
SavingData Anledning Förhindrar paus under sparande Samma API, mindre kritiskt eftersom appen inte pausas

Metodtips

  • Begär endast utökad körningstid när du har en specifik uppgift som inte ska avbrytas på grund av energisparfunktioner.
  • Hantera alltid händelsen Revoked, även i skrivbordsappar.
  • Ta bort sessionen så snart arbetet har slutförts.
  • Håll inte en längre session på obestämd tid – det kan påverka enhetens batteritid.