Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APIs importantes
Saiba como depurar uma tarefa em segundo plano, incluindo a ativação de tarefa em segundo plano e o seguimento de depuração no registo de eventos do Windows.
Depurando tarefas em segundo plano fora de processo versus em processo
Este tópico aborda principalmente tarefas em segundo plano que são executadas em um processo separado do aplicativo host. Se você estiver depurando uma tarefa em segundo plano em processo, não terá um projeto de tarefa em segundo plano separado e poderá definir um ponto de interrupção em OnBackgroundActivated() (onde o código em segundo plano em processo é executado) e consulte a etapa 2 em Acionar tarefas em segundo plano manualmente para depurar o código da tarefa em segundo plano, abaixo, para obter instruções sobre como acionar o código em segundo plano para ser executado.
Verifique se o projeto de tarefa em segundo plano está configurado corretamente
Este tópico pressupõe que você já tenha um aplicativo existente com uma tarefa em segundo plano para depurar. O seguinte é específico para tarefas em segundo plano que são executadas fora do processo e não se aplica a tarefas em segundo plano em processo.
- Em C# e C++, certifique-se de que o projeto principal faça referência ao projeto de tarefa em segundo plano. Se essa referência não estiver em vigor, a tarefa em segundo plano não será incluída no pacote do aplicativo.
- Em C# e C++, verifique se o tipo de saída do projeto de tarefa em segundo plano é "Componente do Tempo de Execução do Windows".
- A classe background deve ser declarada no atributo de ponto de entrada no manifesto do pacote.
Acionar manualmente tarefas em segundo plano para depurar o respetivo código
As tarefas em segundo plano podem ser acionadas manualmente por meio do Microsoft Visual Studio. Em seguida, podes executar o código em passo a passo para depurá-lo.
Em C#, coloque um ponto de interrupção no método Run da classe background (para tarefas em segundo plano em processo, coloque o ponto de interrupção em App.OnBackgroundActivated()) e/ou escreva a saída de depuração usando System.Diagnostics.
Em C++, coloque um ponto de interrupção na função Run da classe background (para tarefas em segundo plano em processo, coloque o ponto de interrupção em App.OnBackgroundActivated()) e/ou escreva a saída de depuração usando OutputDebugString.
Execute a sua aplicação no depurador e, em seguida, inicie a tarefa em segundo plano usando a barra de ferramentas Lifecycle Events. O menu suspenso mostra os nomes das tarefas em segundo plano que podem ser ativadas pelo Visual Studio.
Observação
As opções da barra de ferramentas Eventos do ciclo de vida não são mostradas por padrão no Visual Studio. Para mostrar essas opções, clique com o botão direito do mouse na barra de ferramentas atual no Visual Studio e verifique se a opção Local de Depuração está habilitada.
Para que isso funcione, a tarefa em segundo plano já deve estar registrada e ainda deve estar aguardando o gatilho. Por exemplo, se uma tarefa em segundo plano foi registada com um TimeTrigger único e esse gatilho já foi acionado, iniciar a tarefa por meio do Visual Studio não terá efeito.
Observação
As tarefas em segundo plano que usam os seguintes gatilhos não podem ser ativadas dessa maneira: gatilho do aplicativo, gatilho de MediaProcessing, gatilho de ControlChannelTrigger, gatilho de PushNotificationTrigger, e tarefas em segundo plano usando um SystemTrigger com o tipo de gatilho SmsReceived.
de gatilho do aplicativo e MediaProcessingTrigger podem ser sinalizados manualmente no código comtrigger.RequestAsync().
Quando a tarefa em segundo plano for ativada, o depurador irá anexar-se a ela e exibirá a saída de depuração no Visual Studio.
Depurar ativação de tarefa em segundo plano
Observação
Esta seção é específica para tarefas em segundo plano executadas fora do processo e não se aplica a tarefas em segundo plano em processo.
A ativação de tarefas em segundo plano depende de três coisas:
- O nome e o namespace da classe de tarefa em segundo plano
- O atributo de ponto de entrada especificado no manifesto do pacote
- O ponto de entrada especificado pelo seu aplicativo ao registrar a tarefa em segundo plano
Use o Visual Studio para anotar o ponto de entrada da tarefa em segundo plano:
- Em C# e C++, observe o nome e o namespace da classe de tarefa em segundo plano especificada no projeto de tarefa em segundo plano.
Use o designer de manifesto para verificar se a tarefa em segundo plano está declarada corretamente no manifesto do pacote:
- Em C# e C++, o atributo de ponto de entrada deve corresponder ao namespace da tarefa em segundo plano seguido pelo nome da classe. Por exemplo: RuntimeComponent1.MyBackgroundTask.
- Todos os tipos de gatilho usados com a tarefa também devem ser especificados.
- O executável NÃO DEVE ser especificado, a menos que você esteja usando o ControlChannelTrigger ou PushNotificationTrigger.
Apenas Windows. Para ver o ponto de entrada usado pelo Windows para ativar a tarefa em segundo plano, ative o rastreamento de depuração e use o log de eventos do Windows.
Se você seguir este procedimento e o log de eventos mostrar o ponto de entrada ou gatilho errado para a tarefa em segundo plano, seu aplicativo não está registrando a tarefa em segundo plano corretamente. Para obter ajuda com essa tarefa, consulte Registrar uma tarefa em segundo plano.
- Abra o visualizador de eventos indo para a tela inicial e procurando por eventvwr.exe.
- Vá para Logs de Aplicativos e Serviços ->Microsoft ->Windows ->BackgroundTaskInfrastructure no Visualizador de Eventos.
- No painel de ações, selecione Ver ->Mostrar Registos Analíticos e de Depuração para ativar o registo de diagnóstico.
- Selecione o log de diagnóstico e clique em Ativar log .
- Agora tente usar a sua aplicação para registar e ativar a tarefa em segundo plano novamente.
- Exiba os logs de diagnóstico para obter informações detalhadas sobre erros. Isso incluirá o ponto de entrada registado para a tarefa em segundo plano.
Tarefas em segundo plano e implantação de pacotes do Visual Studio
Se um aplicativo que usa tarefas em segundo plano for implantado usando o Visual Studio, e a versão (principal e/ou secundária) especificada no Designer de Manifesto for atualizada, a reimplantação subsequente do aplicativo com o Visual Studio poderá fazer com que as tarefas em segundo plano do aplicativo parem. Esta situação pode ser corrigida do seguinte modo:
- Use o Windows PowerShell para implantar o aplicativo atualizado (em vez do Visual Studio) executando o script gerado junto com o pacote.
- Se você já implantou o aplicativo usando o Visual Studio e suas tarefas em segundo plano estão paralisadas, reinicie ou faça logoff/login para que as tarefas em segundo plano do aplicativo funcionem novamente.
- Você pode selecionar a opção de depuração "Sempre reinstalar meu pacote" para evitar isso em projetos C#.
- Aguarde até que o aplicativo esteja pronto para a implantação final para incrementar a versão do pacote (não a altere durante a depuração).
Observações
- Certifique-se de que seu aplicativo verifica os registros de tarefas em segundo plano existentes antes de registrar a tarefa em segundo plano novamente. Vários registros da mesma tarefa em segundo plano podem causar resultados inesperados executando a tarefa em segundo plano mais de uma vez cada vez que ela é acionada.
- Se a tarefa em segundo plano exigir acesso à tela de bloqueio, certifique-se de colocar o aplicativo na tela de bloqueio antes de tentar depurar a tarefa em segundo plano. Para obter informações sobre como especificar opções de manifesto para aplicativos compatíveis com tela de bloqueio, consulte Declarar tarefas em segundo plano no manifesto do aplicativo.
- Os parâmetros de registro de tarefas em segundo plano são validados no momento do registro. Um erro será retornado se qualquer um dos parâmetros de registro for inválido. Certifique-se de que seu aplicativo lida normalmente com cenários em que o registro de tarefas em segundo plano falha - se, em vez disso, seu aplicativo depender de ter um objeto de registro válido depois de tentar registrar uma tarefa, ele poderá falhar.
Para saber mais sobre como usar o VS para depurar uma tarefa em segundo plano , veja Como acionar eventos de suspensão, retomada e em segundo plano em aplicativos UWP.
Tópicos relacionados
- Criar e registrar uma tarefa em segundo plano fora do processo
- Criar e registrar uma tarefa em segundo plano em execução
- Registrar uma tarefa em segundo plano
- Declarar tarefas em segundo plano no manifesto do aplicativo
- Diretrizes para tarefas em segundo plano
- Como acionar eventos de suspensão, retomada e em segundo plano em aplicativos UWP
- Visão geral da análise de código para .NET no Visual Studio