Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Relaterat innehåll
Windows developer