Disparar eventos de suspensão, retomada e segundo plano durante a depuração de aplicativos UWP no Visual Studio

Quando você não está depurando, o PLM (Gerenciamento de Tempo de Vida do Processo) do Windows controla o estado da execução de seu aplicativo, iniciando, suspendendo, retomando e encerrando o aplicativo em resposta às ações do usuário e ao estado do dispositivo. Quando você está depurando, o Windows desabilita esses eventos de ativação. Este tópico descreve como acionar esses eventos no depurador.

Este tópico também descreve como depurar Tarefas em segundo plano. Tarefas em segundo plano permitem que você execute certas operações em um processo em segundo plano, mesmo quando o aplicativo não está sendo executado. Você pode usar o depurador para colocar o aplicativo no modo de depuração e depois, sem iniciar a interface de usuário, iniciar e depurar a tarefa em segundo plano.

Para obter mais informações sobre o Gerenciamento de Vida Útil de Processos e sobre tarefas em segundo plano, consulte Inicialização, retomada e multitarefa.

{1>Disparar eventos do Gerenciamento de Vida Útil de Processos<1}

O Windows pode suspender o aplicativo quando o usuário sai dele ou quando o Windows entra em um estado de baixo consumo de energia. Você pode responder ao evento Suspending para salvar dados relevantes do aplicativo e do usuário em um armazenamento persistente e para liberar recursos. Quando um aplicativo é retomado do estado Suspenso, ele entra no estado De Execução e continua de onde estava quando foi suspenso. Você pode responder ao evento Resuming para restaurar ou atualizar o estado do aplicativo e recuperar recursos.

Embora o Windows tente manter o máximo possível de aplicativos suspensos na memória, ele poderá terminar o aplicativo se não houver recursos suficientes para mantê-lo na memória. Um usuário também pode fechar o aplicativo explicitamente. Não há nenhum evento especial para indicar que o usuário fechou um aplicativo.

No depurador do Visual Studio, você pode manualmente suspender, retomar e terminar seus aplicativos para depurar eventos do ciclo de vida do processo. Para depurar um evento do ciclo de vida do processo:

  1. Defina um ponto de interrupção no manipulador do evento que você deseja depurar.

  2. Pressione F5 para iniciar a depuração.

  3. Na barra de ferramentas Local de Depuração, escolha o evento que deseja acionar:

    Suspend, resume, terminate, and background tasks

    Suspender e encerrar fecha o aplicativo e encerra a sessão de depuração.

{1>Disparar tarefas em segundo plano<1}

Qualquer aplicativo pode registrar uma tarefa em segundo plano para responder a determinados eventos do sistema, mesmo quando o aplicativo não está sendo executado. As tarefas em segundo plano não podem executar o código que atualiza diretamente a interface do usuário; em vez disso, elas mostram informações para o usuário com atualizações de bloco, atualizações de notificação e notificações do sistema. Para obter mais informações, consulte Dar suporte ao aplicativo com tarefas em segundo plano.

Você pode disparar os eventos que iniciam as tarefas em segundo plano do aplicativo por meio do depurador.

Observação

O depurador só pode disparar os eventos que não contêm dados, como os que indicam uma alteração de estado no dispositivo. Você precisa disparar manualmente as tarefas em segundo plano que exigem a entrada do usuário ou outros dados.

A maneira mais realística de disparar um evento de tarefa em segundo plano é quando o aplicativo não está sendo executado. No entanto, também é possível disparar o evento em uma sessão de depuração padrão.

{1>Disparar um evento de tarefa em segundo plano por meio de uma sessão de depuração padrão<1}

  1. Defina um ponto de interrupção no código de tarefa em segundo plano que você deseja depurar.

  2. Pressione F5 para iniciar a depuração.

  3. Na lista de eventos na barra de ferramentas Local de Depuração, escolha a tarefa em segundo plano que você deseja iniciar.

    Suspend, resume, terminate, and background tasks

{1>Disparar uma tarefa em segundo plano quando o aplicativo não está sendo executado<1}

  1. Defina um ponto de interrupção no código de tarefa em segundo plano que você deseja depurar.

  2. Abra a página de propriedades de depuração do projeto de inicialização. No Gerenciador de Soluções, selecione o projeto. No menu Depurar, escolha Propriedades.

    Para projetos em C++, expanda Propriedades de Configuração e escolha Depuração.

  3. Realize um dos seguintes procedimentos:

    • Para projetos em Visual C# e Visual Basic, escolha Não iniciar, mas depurar meu código quando ele for iniciado

      C#/VB debug launch application property

    • Para projetos em C++, escolha Não na lista Iniciar aplicativo.

      C++/VB Launch application debug property

  4. Pressione F5 para colocar o aplicativo no modo de depuração. Observe que a lista Processo na barra de ferramentas Local de Depuração exibe o nome do pacote do aplicativo para indicar que você está no modo de depuração.

    Background task Process list

  5. Na lista de eventos na barra de ferramentas Local de Depuração, escolha a tarefa em segundo plano que você deseja iniciar.

    Suspend, resume, terminate, and background tasks

{1>Disparar eventos e tarefas em segundo plano do Gerenciamento de Vida Útil de Processos de um aplicativo instalado<1}

Use a caixa de diálogo Depurar Pacote do Aplicativo Instalado para carregar um aplicativo que já está instalado no depurador. Por exemplo, você poderá depurar um aplicativo instalado da Microsoft Store ou depurar um aplicativo quando tiver seus arquivos de origem, mas não um projeto do Visual Studio para o aplicativo. A caixa de diálogo Depurar Pacote do Aplicativo Instalado permite que você inicie um aplicativo no modo de depuração no computador do Visual Studio ou em um dispositivo remoto, ou que defina que o aplicativo seja executado no modo de depuração, mas não seja iniciado. Para obter mais informações, confira Depurar um pacote de aplicativo instalado.

Após o aplicativo ser carregado no depurador, você poderá executar qualquer um dos procedimentos acima.

{1>Diagnosticando erros de ativação de tarefas em segundo plano<1}

Os logs de diagnóstico no Visualizador de Eventos do Windows referentes à infraestrutura em segundo plano contêm informações detalhadas que podem ser usadas para diagnosticar e solucionar erros de tarefas em segundo plano. Para exibir o log:

  1. Abra o aplicativo visualizador de eventos.

  2. No painel Ações, escolha Exibir e verifique se Mostrar logs analíticos e de depuração está marcado.

  3. Na árvore Visualizador de Eventos (Local), expanda os nós Logs de Aplicativos e Serviços>Microsoft>Windows>BackgroundTasksInfrastructure.

  4. Escolha o log Diagnóstico.