Desarrollo de aplicaciones en segundo plano
Nota:
Visual Studio generará un error críptico al realizar la implementación en una imagen de IoT RS5 (o RS4 con OpenSSH habilitado), a menos que haya instalado un SDK de RS4 o superior al que pueda acceder Visual Studio.
Las aplicaciones en segundo plano son aplicaciones que no tienen ninguna interfaz de usuario directa. Una vez implementadas y configuradas, estas aplicaciones se inician en el inicio de la máquina y se ejecutan continuamente sin limitaciones de uso de recursos de administración de la duración del proceso. Si se bloquean o salen del sistema, se reiniciarán automáticamente. Estas aplicaciones en segundo plano tienen un modelo de ejecución muy sencillo. Las plantillas crean una clase que implementa la interfaz "IBackgroundTask" y genera el método "Run" vacío. Este método "Run" es el punto de entrada de la aplicación.
Hay un punto crítico a tener en cuenta: de forma predeterminada, la aplicación se apagará cuando se complete el método de ejecución. Esto significa que las aplicaciones que siguen el patrón de IoT común de ejecutar un servidor esperando la entrada o en un temporizador encontrarán la salida prematura de la aplicación. Para evitar que esto suceda, debe llamar al método "GetDeferral" para evitar que la aplicación salga. Puede encontrar más información sobre el patrón de aplazamiento aquí.
¿Desde dónde se pueden instalar aplicaciones en segundo plano?
Puede descargar e instalar plantillas de IoT para habilitar aplicaciones en segundo plano desde la Galería de Visual Studio aquí. Como alternativa, las plantillas se pueden encontrar buscando Windows IoT Core Project Templates
en la Galería de Visual Studio o directamente desde Visual Studio en el cuadro de diálogo Extension and Updates (Herramientas > Extensiones y actualizaciones > en línea).
¿Qué idiomas están disponibles?
Se pueden encontrar plantillas de aplicación en segundo plano (IoT) 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
¿Cómo se usan las aplicaciones en segundo plano?
Crear una aplicación en segundo plano es muy similar a crear una tarea en segundo plano. Cuando se inicia la aplicación en segundo plano, se llama al método Run:
public void Run(IBackgroundTaskInstance taskInstance)
{
}
Cuando finaliza el método Run, a menos que se cree un objeto de aplazamiento, finaliza la aplicación en segundo plano. La práctica habitual, para la programación asincrónica es tomar un aplazamiento similar al siguiente:
private BackgroundTaskDeferral deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
deferral = taskInstance.GetDeferral();
//
// TODO: Insert code to start one or more asynchronous methods
//
}
Una vez que se toma un aplazamiento, la aplicación en segundo plano continuará hasta que se llame al método Complete del objeto de aplazamiento.
deferral.Complete();
¿Cómo se inician las aplicaciones en segundo plano?
Esta pregunta se puede dividir en la implementación y la invocación.
Para implementar una aplicación en segundo plano, puede:
- Use F5 de Visual Studio (que compilará, implementará e invocará). Para obtener más información, consulte nuestro ejemplo de Hola mundo en el que se describe cómo implementar e iniciar desde Visual Studio.
Nota:
Esto no configurará la aplicación en segundo plano para que se inicie cuando se inicie el dispositivo.
- Cree un AppX en Visual Studio seleccionando Project Store Create App Packages (Crear paquetes de aplicaciones de Project > Store > ). Una vez que haya creado un AppX, puede usar El Portal de dispositivos Windows para implementarlo en el dispositivo Windows 10 IoT Core.
Para invocar una aplicación en segundo plano, puede:
- Como se mencionó anteriormente, la funcionalidad F5 de Visual Studio se implementará e iniciará inmediatamente la aplicación en segundo plano.
Nota:
Esto no configurará la aplicación en segundo plano para que se inicie cuando se inicie el dispositivo.
- Para una aplicación en segundo plano que se ha implementado en un dispositivo IoT, puede usar la utilidad iotstartup.exe para configurar la aplicación en segundo plano para que se inicie cuando se inicie el dispositivo. Para especificar la aplicación en segundo plano como una aplicación de inicio, siga estas instrucciones (sustituya el nombre de la aplicación por
BackgroundApplication1
lo siguiente):
Inicie una sesión de PowerShell (PS) con el dispositivo Windows IoT Core como se describe aquí.
En la sesión de PS, escriba:
[<your IP address>]: PS C:\> iotstartup list BackgroundApplication1
Debería ver el nombre completo de la aplicación en segundo plano, es decir, algo parecido a:
Headed : BackgroundApplication1-uwp_cqewk5knvpvee!App Headless : BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee
La utilidad confirma que la aplicación en segundo plano es una aplicación "sin encabezado" y está instalada correctamente. Es probable que vea una entrada encabezado también para las aplicaciones en segundo plano, pero esto se puede ignorar.
Ahora, es fácil establecer esta aplicación como una "Aplicación de inicio". Solo tiene que escribir el comando:
[<your IP address>]: PS C:\> iotstartup add headless BackgroundApplication1
La utilidad confirmará que la aplicación en segundo plano se ha agregado a la lista de "Aplicaciones de inicio" sin encabezado:
Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1
Continúe y reinicie el dispositivo Windows IoT Core. Desde la sesión de PS, puede emitir el comando shutdown:
[<your IP address>]: PS C:\> shutdown /r /t 0
Una vez reiniciado el dispositivo, la aplicación en segundo plano se iniciará automáticamente y Windows 10 IoT Core se asegurará de que se reinicie siempre que se detenga.
Nota:
Una vez que se registra una aplicación en segundo plano para que se ejecute automáticamente, si la aplicación sale o se bloquea, se reiniciará automáticamente. La aplicación no se informa del motivo por el que se está iniciando o reiniciando, por lo que si quiere realizar una acción especial en un reinicio, deberá realizar un seguimiento del estado de la aplicación en la aplicación.
Puede quitar la aplicación en segundo plano de la lista de aplicaciones de inicio sin encabezado escribiendo el comando :
[<your IP address>]: PS C:\> iotstartup remove headless BackgroundApplication1
La utilidad confirmará que la aplicación en segundo plano se ha quitado de la lista de aplicaciones de inicio sin encabezado:
Removed headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee
Consulte también
Para agregar una aplicación en segundo plano al compilar una imagen personalizada, consulte Creación de un paquete Appx.