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.
Os aplicativos da área de trabalho criados com o SDK do Aplicativo Windows são executados continuamente, mesmo quando o usuário alterna para outro aplicativo. Este artigo explica como a execução em segundo plano funciona e recomenda as práticas recomendadas para eficiência.
Importante
Os aplicativos da área de trabalho não são suspensos ou encerrados automaticamente pelo sistema, como acontece com os aplicativos UWP. Seu aplicativo continua em execução até que o usuário o feche ou o processo seja encerrado. Nenhuma APIs especial ou recursos restritos são necessários para serem executados indefinidamente. Use notificações de memória do sistema para responder à pressão do recurso quando apropriado.
Aplicativos da área de trabalho são executados em segundo plano nativamente
Na UWP, a execução indefinida em segundo plano exigia a capacidade restrita extendedBackgroundTaskTime e a implantação corporativa. Os aplicativos da área de trabalho não têm essa restrição. Os threads do aplicativo continuam em execução, os temporizadores continuam sendo disparados e as conexões de rede permanecem abertas independentemente de sua janela ficar visível.
Isso significa que você pode:
- Manter conexões persistentes com servidores (por exemplo, aplicativos de chat, monitoramento em tempo real).
- Execute cálculos longos (por exemplo, codificação de vídeo, análise de dados).
- Verificar atualizações periodicamente.
- Reproduza áudio e atualize os controles de mídia.
Práticas recomendadas para a eficiência da bateria
Embora os aplicativos da área de trabalho possam ser executados sem restrições, ser um bom cidadão em dispositivos movidos a bateria melhora a experiência do usuário. O sistema poderá sinalizar seu aplicativo como um consumidor de recursos pesados se ele usar CPU ou rede excessiva em segundo plano.
Reduzir o trabalho quando a janela não estiver 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);
}
};
Use padrões sensíveis ao consumo de energia
- Reduzir a frequência do temporizador — alterne de intervalos de sub-segundo para vários segundos quando o aplicativo estiver em segundo plano.
- Pausar a renderização não essencial – interromper animações, trabalho de GPU e atualizações de tela.
- Requisições de rede em lote — Combine várias requisições em um número menor de requisições maiores.
- Respeitar a economia de bateria — verifique PowerManager.BatteryStatus e reduza o trabalho quando o dispositivo estiver em 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;
}
}
Usar tarefas em segundo plano para o trabalho controlado por eventos
Se seu aplicativo precisar responder a eventos do sistema (como um temporizador, notificação por push ou alteração de rede) sem ser executado continuamente, considere usar uma tarefa em segundo plano em vez disso:
var builder = new BackgroundTaskBuilder
{
Name = "PeriodicSync",
TaskEntryPoint = "MyApp.Background.SyncTask"
};
builder.SetTrigger(new TimeTrigger(15, false));
builder.Register();
Note
As tarefas em segundo plano exigem a identidade do pacote MSIX para registro. Se o aplicativo estiver desempacotado, use temporizadores em processo ou tarefas agendadas.
Execução estendida para tarefas críticas
Quando você tiver um trabalho que não deve ser interrompido pelo gerenciamento de energia (por exemplo, salvando um arquivo grande), use uma sessão de execução estendida. Isso sinaliza para o sistema que seu trabalho é importante, mesmo em dispositivos movidos a bateria.
Comparação com a execução em segundo plano da UWP
| Característica | UWP | Desktop |
|---|---|---|
| O aplicativo é executado em segundo plano | Somente com tarefas em segundo plano ou recursos restritos | Sempre |
| Requer declaração de funcionalidade | Sim (extendedBackgroundTaskTime) |
No |
| O sistema é encerrado para economizar recursos | Yes | No |
| Limitação pelo modo Economia de bateria | O sistema impõe restrições | O aplicativo deve se autorregular |
| Tarefas em segundo plano para trabalho controlado por eventos | Mecanismo primário | Complemento opcional |
Conteúdo relacionado
Windows developer