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.
Importante
Os metadados do dispositivo foram preteridos e serão removidos em uma versão futura do Windows. Para obter informações sobre a substituição dessa funcionalidade, consulte Metadados do contêiner do pacote de driver.
Seu aplicativo UWP pode sincronizar dados em seu dispositivo periférico. Se o seu aplicativo estiver associado a metadados do dispositivo, esse aplicativo de dispositivo UWP também poderá executar atualizações de dispositivo, como atualizações de firmware. Este artigo descreve como criar uma tarefa em segundo plano do dispositivo que usa o DeviceUseTrigger ou DeviceServicingTrigger. Os agentes em segundo plano do dispositivo que usam esses gatilhos estão sujeitos a políticas que garantem o consentimento do usuário e ajudam a preservar a vida útil da bateria enquanto os dispositivos estão sendo sincronizados e atualizados. Para saber mais sobre tarefas em segundo plano do dispositivo, veja Sincronização e atualização de dispositivos para aplicativos de dispositivo UWP.
Este artigo corresponde ao exemplo de dispositivo USB personalizado. O exemplo de dispositivo USB personalizado demonstra uma tarefa em segundo plano que executa a sincronização do dispositivo com o DeviceUseTrigger.
Embora a tarefa em segundo plano do dispositivo no exemplo de dispositivo USB personalizado apresente um DeviceUseTrigger, tudo o que foi discutido neste artigo também pode ser aplicado a tarefas em segundo plano do dispositivo que usam DeviceServicingTrigger. A única diferença entre usar os dois gatilhos são as verificações de política feitas pelo Windows.
O manifesto do aplicativo
Para usar uma tarefa em segundo plano do dispositivo, seu aplicativo deve declará-la no arquivo de manifesto do aplicativo em primeiro plano, como é feito para tarefas em segundo plano acionadas pelo sistema. Para saber mais, veja Sincronização e atualização de dispositivos para aplicativos de dispositivo UWP.
Neste exemplo de um arquivo de manifesto do pacote do aplicativo, DeviceLibrary.SyncContent é um dos pontos de entrada do aplicativo em primeiro plano. DeviceLibrary.SyncContent é o ponto de entrada para a tarefa em segundo plano que usa o DeviceUseTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
A tarefa em segundo plano do dispositivo
A classe de tarefa em segundo plano do dispositivo implementa a IBackgroundTask interface e contém o código real que você cria para sincronizar ou atualizar seu dispositivo periférico. A classe de tarefa em segundo plano é executada quando a tarefa em segundo plano é acionada e a partir do ponto de entrada fornecido no manifesto da aplicação.
A classe de plano de fundo do dispositivo no exemplo de dispositivo USB personalizado contém o código para executar uma sincronização com um dispositivo USB usando a tarefa em segundo plano DeviceUseTrigger . Para obter detalhes completos, faça o download do exemplo. Para saber mais sobre a implementação IBackgroundTask e a infraestrutura de tarefas em segundo plano do Windows, veja Suporte ao seu aplicativo com tarefas em segundo plano.
As principais partes da tarefa em segundo plano do dispositivo no exemplo de dispositivo USB personalizado incluem:
A
IoSyncBackgroundTaskclasse implementa aIBackgroundTaskinterface exigida pela infraestrutura de tarefas em segundo plano do Windows.A
IoSyncBackgroundTaskclasse obtém a instânciaDeviceUseDetailspassada para a classe no método Run da classeIoSyncBackgroundTaske usa essa instância para relatar o progresso ao aplicativo da Microsoft Store e para registar eventos de cancelamento.O método Run da classe
IoSyncBackgroundTasktambém chama os métodos privadosOpenDeviceeWriteToDeviceAsyncque implementam o código para sincronização do dispositivo em segundo plano.
O aplicativo em primeiro plano
O aplicativo em primeiro plano no exemplo de dispositivo USB personalizado registra e dispara uma tarefa em segundo plano do dispositivo que usa DeviceUseTrigger. Esta seção fornece uma visão geral das etapas que seu aplicativo em primeiro plano executará para registrar, acionar e manipular o progresso de uma tarefa em segundo plano do dispositivo.
O aplicativo em primeiro plano no exemplo de dispositivo USB personalizado executa as seguintes etapas para usar uma tarefa em segundo plano do dispositivo:
Cria novos objetos DeviceUseTrigger e
BackgroundTaskRegistration.Verifica se alguma tarefa em segundo plano foi registrada anteriormente por este aplicativo e as cancela chamando o método BackgroundTaskRegistration.Unregister na tarefa.
O método privado
SetupBackgroundTaskregista a tarefa em segundo plano que será sincronizada com o dispositivo. OSetupBackgroundTaskmétodo é chamado a partir doSyncWithDeviceAsyncmétodo na próxima etapa.Inicializa o
DeviceUseTriggere salva-o para uso posterior.Cria um novo
BackgroundTaskBuilderobjeto e usa as suasNameasTaskEntryPointpropriedades e oSetTriggermétodo para registar o objeto da aplicação e o nome da tarefa em segundo planoDeviceUseTrigger. ABackgroundTaskBuilderpropriedade doTaskEntryPointobjeto é definida como o nome completo da classe de tarefa em segundo plano que será executada quando a tarefa em segundo plano for acionada.Registra eventos de conclusão e progresso da tarefa em segundo plano para que o aplicativo em primeiro plano possa fornecer atualizações de conclusão e progresso ao usuário.
O método privado
SyncWithDeviceAsyncregista a tarefa em segundo plano que sincronizará com o dispositivo e inicia a sincronização em segundo plano.Chama o
SetupBackgroundTaskmétodo da etapa anterior e registra a tarefa em segundo plano que será sincronizada com o dispositivo.Chama o método privado
StartSyncBackgroundTaskAsyncque inicia a tarefa em segundo plano. Esse método fecha a alça do aplicativo relativa ao dispositivo, de forma a garantir que a tarefa em segundo plano seja capaz de abrir o dispositivo quando a tarefa for iniciada.Importante
A tarefa em segundo plano precisará abrir o dispositivo para executar a atualização, portanto, o aplicativo em primeiro plano deve fechar suas conexões com o dispositivo antes de chamar
RequestAsync.
Em seguida, o método
StartSyncBackgroundTaskAsyncchama o método do objetoDeviceUseTrigger, que dispara a tarefa em segundo plano e retorna o objetoRequestAsyncdeDeviceTriggerResults, usado para determinar se a tarefa em segundo plano foi iniciada com êxito.Importante
O Windows verifica se todas as verificações de política de iniciação de tarefas necessárias foram concluídas. Se todas as verificações de política forem concluídas, a operação de atualização será executada como uma tarefa em segundo plano fora do aplicativo em primeiro plano, permitindo que o aplicativo seja suspenso com segurança enquanto a operação estiver em andamento. O Windows também imporá quaisquer requisitos de tempo de execução e cancelará a tarefa em segundo plano se esses requisitos não forem mais atendidos.
Finalmente, o método
SyncWithDeviceAsyncusa o objetoDeviceTriggerResultsretornado deStartSyncBackgroundTaskAsyncpara determinar se a tarefa em segundo plano foi iniciada com êxito. Uma switch statement é usada para inspecionar o resultado deDeviceTriggerResultsO aplicativo em primeiro plano implementa um manipulador de eventos privado
OnSyncWithDeviceProgressque atualizará a interface do usuário do aplicativo com o progresso da tarefa em segundo plano do dispositivo.O aplicativo em primeiro plano implementa um manipulador de eventos privado
OnSyncWithDeviceCompletedpara lidar com a transição de tarefas em segundo plano para o aplicativo em primeiro plano quando a tarefa em segundo plano for concluída.Usa o método
CheckResultsdo objetoBackgroundTaskCompletedEventArgspara verificar se alguma exceção foi lançada pela tarefa em segundo plano.O aplicativo em primeiro plano reabre o dispositivo para uso pelo aplicativo agora que a tarefa em segundo plano foi concluída e atualiza a interface do usuário para notificar o usuário.
O aplicativo em primeiro plano implementa manipuladores de eventos de clique em botões privados da interface do utilizador para iniciar e cancelar a tarefa em segundo plano.
O manipulador de eventos privado
Sync_Clickchama oSyncWithDeviceAsyncmétodo descrito nas etapas anteriores.O manipulador de eventos privado
CancelSync_Clickchama o método privadoCancelSyncWithDevicepara cancelar a tarefa em segundo plano.
O método privado
CancelSyncWithDevicedesregista e cancela quaisquer sincronizações ativas de dispositivos para que o dispositivo possa ser reaberto usando o método BackgroundTaskRegistration.Unregister.