Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Sessões de execução estendidas permitem que seu aplicativo solicite que o sistema o mantenha em execução para cenários específicos, mesmo quando ele seria um candidato para redução de recursos em dispositivos movidos a bateria. Embora os aplicativos para desktop não sejam suspensos automaticamente, a execução estendida ainda é útil para sinalizar ao sistema a intenção.
Importante
Os aplicativos da área de trabalho continuam em execução, usem ou não a execução estendida. O principal benefício de ExtendedExecutionSession em um aplicativo para desktop é comunicar ao sistema que a atividade do aplicativo é importante e não deve ser interrompida por medidas de economia de energia, como a Espera Moderna ou o modo de economia de bateria.
Quando usar a execução estendida
As sessões de execução estendida são mais úteis em aplicativos da área de trabalho para:
- Salvando dados críticos – garantindo que uma grande operação de salvamento seja concluída antes que o dispositivo entre em espera.
- Rastreamento de localização — mantendo os dados de GPS ativos enquanto o aplicativo está minimizado em um notebook.
- Processamentos de longa duração — Conclusão de uma tarefa de renderização, compilação ou análise de dados.
Para cenários em que seu aplicativo da área de trabalho simplesmente precisa continuar em execução (por exemplo, um aplicativo de chat ou player de música), você não precisa de execução estendida – o aplicativo continua em execução normalmente.
Criar uma sessão de execução estendida
Use a classe 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
}
}
Motivos de execução estendida
| Reason | Caso de uso |
|---|---|
SavingData |
Seu aplicativo precisa concluir uma operação de salvamento |
LocationTracking |
Seu aplicativo está acompanhando a localização do usuário |
Unspecified |
Outras tarefas de longa duração |
Note
LocationTracking requer o recurso location no manifesto do aplicativo e o consentimento do usuário.
Encerrar a sessão
Quando o trabalho terminar, descarte a sessão para liberar a solicitação:
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;
}
}
Diferenças da UWP
| Behavior | UWP | Desktop |
|---|---|---|
| Purpose | Impede a suspensão | Sinaliza importância para o gerenciamento de energia |
| O aplicativo continua em execução sem ele | Não — os aplicativos UWP são suspensos | Sim – aplicativos da área de trabalho são executados normalmente |
| Revogação de sessão | Pode causar suspensão | Não interrompe o aplicativo, mas a economia de energia pode ser aplicada |
SavingData Razão |
Impede a suspensão durante o salvamento | Mesma API, menos crítica, já que o aplicativo não é suspenso |
Práticas recomendadas
- Solicite apenas a execução estendida quando você tiver um trabalho específico que não deve ser interrompido por economia de energia.
- Sempre trate o evento
Revoked, mesmo em aplicativos para desktop. - Encerre a sessão assim que o trabalho terminar.
- Não mantenha uma sessão estendida indefinidamente — ela pode afetar a duração da bateria do dispositivo.
Conteúdo relacionado
Windows developer