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.
As aplicações de ambiente de trabalho construídas com o SDK de Aplicações Windows funcionam continuamente, mesmo quando o utilizador muda para outra aplicação. Este artigo explica como funciona a execução em segundo plano e recomenda as melhores práticas para melhorar a eficiência.
Importante
As aplicações de ambiente de trabalho não são automaticamente suspensas ou terminadas pelo sistema da mesma forma que as aplicações UWP. A sua aplicação continua a ser executada até que o utilizador a feche ou o processo termine. Não são necessárias APIs especiais ou capacidades restritas para funcionar indefinidamente. Use notificações de memória do sistema para responder à pressão de recursos quando apropriado.
As aplicações de ambiente de trabalho correm nativamente em segundo plano
No UWP, correr indefinidamente em segundo plano exigia capacidade extendedBackgroundTaskTime restrita e implementação empresarial. As aplicações de ambiente de trabalho não têm esta restrição. As threads da tua aplicação continuam a executar-se, os temporizadores continuam a disparar e as ligações de rede mantêm-se abertas independentemente de a janela estar visível ou não.
Isto significa que pode:
- Mantenha ligações persistentes a servidores (por exemplo, aplicações de chat, monitorização em tempo real).
- Executar cálculos longos (por exemplo, codificação de vídeo, análise de dados).
- Consulte a sondagem para atualizações sobre o horário.
- Reproduz áudio e atualiza os controlos dos media.
Boas práticas para eficiência de baterias
Embora as aplicações de ambiente de trabalho possam ser executadas sem restrições, comportarem-se de forma responsável em dispositivos alimentados por bateria melhora a experiência do utilizador. O sistema pode assinalar a sua aplicação como um grande consumidor de recursos se esta usar CPU ou rede em excesso em segundo plano.
Reduza o trabalho quando a janela não está visível
// m_window is your app's main Window; _updateTimer is a DispatcherTimer field.
Microsoft.UI.Xaml.Window m_window = this;
Microsoft.UI.Xaml.DispatcherTimer _updateTimer = new();
m_window.Activated += (sender, args) =>
{
if (args.WindowActivationState == WindowActivationState.Deactivated)
{
// Window lost focus — slow down background processing
_updateTimer.Interval = TimeSpan.FromSeconds(30);
}
else
{
// Window is active — resume full-speed processing
_updateTimer.Interval = TimeSpan.FromSeconds(1);
}
};
Utilize padrões eficientes em termos energéticos
- Reduzir a frequência do temporizador — Mude de intervalos de sub-segundo para vários segundos quando a aplicação estiver em segundo plano.
- Pausa a renderização não essencial — Interrompe animações, trabalho de GPU e atualizações de ecrã.
- Solicitações de rede em lote — Combine várias solicitações em um menor número de solicitações maiores.
- Respeite a poupança de bateria — Verifique o PowerManager.BatteryStatus e reduza o trabalho quando o dispositivo estiver com bateria.
using Windows.System.Power;
private bool _enableBackgroundSync = true;
private void CheckPowerState()
{
if (PowerManager.BatteryStatus == BatteryStatus.Discharging &&
PowerManager.RemainingChargePercent < 20)
{
// Reduce background work significantly
_enableBackgroundSync = false;
}
}
Use tarefas em segundo plano para trabalho orientado a eventos
Se a sua aplicação precisar de responder a eventos do sistema (como temporizador, notificação push ou mudança de rede) sem correr continuamente, considere usar uma tarefa em segundo plano:
var builder = new BackgroundTaskBuilder
{
Name = "PeriodicSync",
TaskEntryPoint = "MyApp.Background.SyncTask"
};
builder.SetTrigger(new TimeTrigger(15, false));
builder.Register();
Note
As tarefas em segundo plano requerem a identidade do pacote MSIX para o registo. Se a sua aplicação estiver desempacotada, use temporizadores em processo ou tarefas agendadas em vez disso.
Execução prolongada para tarefas críticas
Quando tiver trabalho que não deva ser interrompido pela gestão de energia (por exemplo, guardar um ficheiro grande), use uma sessão de execução prolongada. Isto sinaliza ao sistema que o seu trabalho é importante, mesmo em dispositivos alimentados por bateria.
Comparação com a execução em segundo plano da UWP
| Feature | UWP | Desktop |
|---|---|---|
| A aplicação corre em segundo plano | Apenas com tarefas em segundo plano ou capacidades restritas | Sempre |
| Requer declaração de capacidades | Sim (extendedBackgroundTaskTime) |
No |
| O sistema termina para poupar recursos | Yes | No |
| Limitação da poupança de bateria | Sistema impõe restrições | A aplicação deve autorregular-se |
| Tarefas de fundo para trabalho orientado por eventos | Mecanismo primário | Complemento opcional |
Conteúdo relacionado
Windows developer