Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sessões de execução prolongadas permitem que a sua aplicação peça que o sistema o mantenha a funcionar para cenários específicos, mesmo quando, de outra forma, seria candidato a redução de recursos em dispositivos alimentados por bateria. Embora as aplicações de ambiente de trabalho não sejam automaticamente suspensas, a execução prolongada continua a ser útil para sinalizar a intenção ao sistema.
Importante
As aplicações de ambiente de trabalho continuam a funcionar, quer usem ou não execução estendida. O principal benefício de ExtendedExecutionSession uma aplicação de ambiente de trabalho é comunicar ao sistema que o seu trabalho é importante e não deve ser interrompido por medidas de poupança de energia, como o Modern Standby ou a poupança de bateria.
Quando usar a execução estendida
As sessões de execução estendidas são mais úteis em aplicações de ambiente de trabalho para:
- Guardar dados críticos — Garantir que uma grande operação de gravação é concluída antes de o dispositivo entrar em standby.
- Rastreio de localização — Manter os dados GPS a circular enquanto a aplicação está minimizada num portátil.
- Cálculos de longa duração — Completar uma tarefa de renderização, compilação ou análise de dados.
Para cenários em que a sua aplicação de ambiente de trabalho simplesmente precisa de continuar a funcionar (por exemplo, uma aplicação de chat ou leitor de música), não precisa de uma execução prolongada — a aplicação continua a correr normalmente.
Crie uma sessão de execução estendida
Utilize 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
}
}
Razões de execução prolongada
| Reason | Caso de uso |
|---|---|
SavingData |
A sua aplicação precisa de completar uma operação de gravação |
LocationTracking |
A sua aplicação está a rastrear a localização do utilizador |
Unspecified |
Outros trabalhos de longa duração |
Note
LocationTracking requer a permissão location no manifesto da sua aplicação e o consentimento do utilizador.
Fim da sessão
Quando o trabalho estiver concluído, encerre a sessão para libertar o pedido:
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 em relação à UWP
| Comportamento | UWP | Desktop |
|---|---|---|
| Purpose | Previne a suspensão | Sinaliza importância para a gestão de energia |
| A aplicação continua a correr sem ele | Não — As aplicações UWP são suspensas | Sim — as aplicações de ambiente de trabalho funcionam normalmente |
| Revogação da sessão | Pode causar suspensão | Não impede a aplicação, mas a poupança de energia pode aplicar-se |
SavingData Razão |
Impede a suspensão durante a gravação | Mesma API, menos crítica porque a app não suspende |
Melhores práticas
- Só pede execução prolongada quando tiveres trabalho específico que não deva ser interrompido por poupança de energia.
- Processa sempre o evento
Revoked, mesmo em aplicações de ambiente de trabalho. - Elimine a sessão assim que o trabalho estiver concluído.
- Não mantenha uma sessão prolongada indefinidamente — isso pode afetar a duração da bateria do dispositivo.
Conteúdo relacionado
Windows developer