Desenvolvendo aplicativos em segundo plano
Observação
O Visual Studio gerará um erro indecifrável ao implantar em uma imagem de IoT RS5 (ou RS4 com OpenSSH habilitado), a menos que esteja instalado um SDK de RS4 ou superior que possa ser acessado pelo Visual Studio.
Aplicativos em segundo plano são aplicativos que não têm interface do usuário direta. Depois de implantados e configurados, esses aplicativos são iniciados na inicialização da máquina e executados continuamente sem limitações de uso de recursos de gerenciamento de tempo de vida do processo. Se eles travarem ou saírem, o sistema os reiniciará automaticamente. Esses aplicativos em segundo plano têm um modelo de execução muito simples. Os modelos criam uma classe que implementa a interface "IBackgroundTask" e gera o método "Run" vazio. Esse método "Executar" é o ponto de entrada para sua aplicação.
Há um ponto crítico a ser observado: por padrão, o aplicativo será desligado quando o método de execução for concluído. Isso significa que os aplicativos que seguem o padrão comum de IoT de executar um servidor aguardando entrada ou em um temporizador encontrarão a saída do aplicativo prematuramente. Para evitar que isso aconteça, você deve chamar o método "GetDeferral" para impedir que o aplicativo seja encerrado. Você pode encontrar mais informações sobre o padrão de adiamento aqui.
De onde os aplicativos em segundo plano podem ser instalados?
Você pode baixar e instalar modelos de IoT para habilitar aplicativos em segundo plano da Galeria do Visual Studio aqui. Como alternativa, os modelos podem ser encontrados pesquisando Windows IoT Core Project Templates
na Galeria do Visual Studio ou diretamente do Visual Studio na caixa de diálogo Extensão e Atualizações (Extensões de Ferramentas > e Atualizações > Online).
Quais idiomas estão disponíveis?
Os modelos de aplicativo em segundo plano (IoT) podem ser encontrados para:
- C++
File > New > Project > Installed > Visual C++ > Windows > Windows IoT Core
- C#
File > New > Project > Installed > Visual C# > Windows > Windows IoT Core
- Visual Basic
File > New > Project > Installed > Visual Basic > Windows > Windows IoT Core
- JavaScript
File > New > Project > Installed > JavaScript > Windows > Windows IoT Core
Como os aplicativos em segundo plano são usados?
A criação de um aplicativo em segundo plano é muito semelhante à criação de uma tarefa em segundo plano. Quando o aplicativo em segundo plano é iniciado, o método Run é chamado:
public void Run(IBackgroundTaskInstance taskInstance)
{
}
Quando o método Run termina, a menos que um objeto de adiamento seja criado, o aplicativo em segundo plano é encerrado. A prática comum, para programação assíncrona, é fazer um adiamento como este:
private BackgroundTaskDeferral deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
deferral = taskInstance.GetDeferral();
//
// TODO: Insert code to start one or more asynchronous methods
//
}
Depois que um adiamento for feito, o aplicativo em segundo plano continuará até que o método Complete do objeto de adiamento seja chamado.
deferral.Complete();
Como os aplicativos em segundo plano são iniciados?
Essa pergunta pode ser dividida em implantação e invocação.
Para implantar um aplicativo em segundo plano, você pode:
- Use o F5 do Visual Studio (que será compilado, implantado e invocado). Para obter mais detalhes, consulte nosso exemplo Hello World, onde descrevemos como implantar e iniciar do Visual Studio.
Observação
Isso não configurará seu aplicativo em segundo plano para iniciar quando o dispositivo for inicializado.
- Crie um AppX no Visual Studio selecionando Criar Pacotes de Aplicativos da Loja > de Projetos>. Depois de criar um AppX, você pode usar o Portal de Dispositivos do Windows para implantá-lo em seu dispositivo Windows 10 IoT Core.
Para invocar um aplicativo em segundo plano, você pode:
- Conforme mencionado acima, a funcionalidade F5 do Visual Studio será implantada e iniciará imediatamente seu aplicativo em segundo plano.
Observação
Isso não configurará seu aplicativo em segundo plano para iniciar quando o dispositivo for inicializado.
- Para um aplicativo em segundo plano que foi implantado em um dispositivo IoT, você pode usar o utilitário iotstartup.exe para configurar seu aplicativo em segundo plano para iniciar quando o dispositivo for inicializado. Para especificar seu aplicativo em segundo plano como um aplicativo de inicialização, siga estas instruções (substitua o nome do aplicativo abaixo
BackgroundApplication1
):
Inicie uma sessão do PowerShell (PS) com seu dispositivo Windows IoT Core, conforme descrito aqui.
Na sessão PS, digite:
[<your IP address>]: PS C:\> iotstartup list BackgroundApplication1
Você deve ver o nome completo do seu aplicativo em segundo plano, ou seja, algo como:
Headed : BackgroundApplication1-uwp_cqewk5knvpvee!App Headless : BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee
O utilitário está confirmando que seu aplicativo em segundo plano é um aplicativo 'headless' e está instalado corretamente. Você provavelmente verá uma entrada Headed também para seus aplicativos em segundo plano, mas isso pode ser desconsiderado.
Agora, é fácil definir este aplicativo como um 'Aplicativo de inicialização'. Basta digitar o comando:
[<your IP address>]: PS C:\> iotstartup add headless BackgroundApplication1
O utilitário confirmará que seu aplicativo em segundo plano foi adicionado à lista de 'Aplicativos de inicialização' sem periféricos:
Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1
Vá em frente e reinicie seu dispositivo Windows IoT Core. Na sessão PS, você pode emitir o comando shutdown:
[<your IP address>]: PS C:\> shutdown /r /t 0
Depois que o dispositivo for reiniciado, seu aplicativo em segundo plano será iniciado automaticamente e o Windows 10 IoT Core garantirá que ele seja reiniciado sempre que parar.
Observação
Depois que um aplicativo em segundo plano é registrado para ser executado automaticamente, se o aplicativo for encerrado ou travar, ele será reiniciado automaticamente. O aplicativo não é informado do motivo pelo qual está sendo iniciado ou reiniciado, portanto, se você quiser executar uma ação especial em uma reinicialização, precisará acompanhar o estado do aplicativo em seu aplicativo.
Você pode remover seu aplicativo em segundo plano da lista de aplicativos de inicialização sem periféricos digitando o comando:
[<your IP address>]: PS C:\> iotstartup remove headless BackgroundApplication1
O utilitário confirmará que seu aplicativo em segundo plano foi removido da lista de 'Aplicativos de inicialização' sem periféricos:
Removed headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee
Confira também
Para adicionar um aplicativo em segundo plano ao criar uma imagem personalizada, consulte Criar um pacote Appx