Share via


Sviluppo di applicazioni in background

Nota

Visual Studio genererà un errore di difficile interpretazione quando viene distribuito in un'immagine di RS5 IoT (o RS4 con OpenSSH abilitato) a meno che non sia installato un SDK di RS4 o versione successiva accessibile a Visual Studio.

Le applicazioni in background sono applicazioni senza interfaccia utente diretta. Una volta distribuite e configurate, queste applicazioni vengono avviate all'avvio del computer ed eseguite continuamente senza limitazioni di utilizzo delle risorse di gestione della durata dei processi. Se si arrestano in modo anomalo o si esce dal sistema, verranno riavviati automaticamente. Queste applicazioni in background hanno un modello di esecuzione molto semplice. I modelli creano una classe che implementa l'interfaccia "IBackgroundTask" e genera il metodo "Run" vuoto. Questo metodo "Run" è il punto di ingresso dell'applicazione.

Attività in background

È necessario tenere presente un punto critico: per impostazione predefinita, l'applicazione verrà arrestata al termine del metodo di esecuzione. Ciò significa che le app che seguono il modello IoT comune di esecuzione di un server in attesa di input o in un timer troveranno l'uscita prematura dell'app. Per evitare che ciò accada, è necessario chiamare il metodo "GetDeferral" per impedire all'applicazione di uscire. Altre informazioni sul modello di rinvio sono disponibili qui.

Da dove è possibile installare applicazioni in background?

È possibile scaricare e installare modelli IoT per abilitare le applicazioni in background da Visual Studio Gallery qui. In alternativa, è possibile trovare i modelli cercando Windows IoT Core Project Templates in Visual Studio Gallery o direttamente da Visual Studio nella finestra di dialogo Estensione e Aggiornamenti (Estensioni degli strumenti > e Aggiornamenti > Online).

Quali lingue sono disponibili?

I modelli di applicazione in background (IoT) sono disponibili per:

  • C++File > New > Project > Installed > Visual C++ > Windows > Windows IoT Core
  • C#File > New > Project > Installed > Visual C# > Windows > Windows IoT Core
  • Visual BasicFile > New > Project > Installed > Visual Basic > Windows > Windows IoT Core
  • JavascriptFile > New > Project > Installed > JavaScript > Windows > Windows IoT Core

Come vengono usate le applicazioni in background?

La creazione di un'applicazione in background è molto simile alla creazione di un'attività in background. All'avvio dell'applicazione in background, viene chiamato il metodo Run:

public void Run(IBackgroundTaskInstance taskInstance)
{
}

Al termine del metodo Run, a meno che non venga creato un oggetto differire, l'applicazione in background termina. La pratica comune per la programmazione asincrona consiste nell'accettare un rinvio simile al seguente:

private BackgroundTaskDeferral deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
    deferral = taskInstance.GetDeferral();

    //
    // TODO: Insert code to start one or more asynchronous methods
    //
}

Una volta acquisito un differire, l'applicazione in background continuerà fino a quando non viene chiamato il metodo Complete dell'oggetto differire.

deferral.Complete();

Come si avviano le applicazioni in background?

Questa domanda può essere suddivisa nella distribuzione e nella chiamata.

Per distribuire un'applicazione in background, è possibile:

  • Usare F5 di Visual Studio (che compilerà, distribuirà e richiamerà). Per altre informazioni, vedere l'esempio di Hello World in cui viene descritto come distribuire e avviare da Visual Studio.

Nota

In questo modo l'applicazione in background non verrà configurata per l'avvio all'avvio del dispositivo.

  • Creare un'appX in Visual Studio selezionando Crea pacchetti di app in Project > Store > . Dopo aver creato un'appX, è possibile usare Windows Device Portal per distribuirlo nel dispositivo Windows 10 IoT Core.

Per richiamare un'applicazione in background, è possibile:

  • Come accennato in precedenza, la funzionalità F5 di Visual Studio distribuirà e avvierà immediatamente l'applicazione in background.

Nota

In questo modo l'applicazione in background non verrà configurata per l'avvio all'avvio del dispositivo.

  • Per un'applicazione in background distribuita in un dispositivo IoT, è possibile usare l'utilità iotstartup.exe per configurare l'applicazione in background da avviare all'avvio del dispositivo. Per specificare l'applicazione in background come app di avvio, seguire queste istruzioni (sostituire il nome dell'app per BackgroundApplication1 il seguente):
  1. Avviare una sessione di PowerShell (PS) con il dispositivo Windows IoT Core come descritto qui.

  2. Dalla sessione PS digitare:

    [<your IP address>]: PS C:\> iotstartup list BackgroundApplication1

  3. Verrà visualizzato il nome completo dell'applicazione in background, ad esempio:

    Headed : BackgroundApplication1-uwp_cqewk5knvpvee!App Headless : BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee

  4. L'utilità conferma che l'applicazione in background è un'applicazione "headless" e viene installata correttamente. È probabile che venga visualizzata anche una voce In testa per le applicazioni in background, ma questa operazione può essere ignorata.

  5. A questo scopo, è facile impostare questa app come "App di avvio". È sufficiente digitare il comando:

    [<your IP address>]: PS C:\> iotstartup add headless BackgroundApplication1

  6. L'utilità conferma che l'applicazione in background è stata aggiunta all'elenco di app di avvio headless:

    Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1

  7. Procedere e riavviare il dispositivo Windows IoT Core. Dalla sessione PS è possibile eseguire il comando di arresto:

    [<your IP address>]: PS C:\> shutdown /r /t 0

  8. Dopo il riavvio del dispositivo, l'applicazione in background verrà avviata automaticamente e Windows 10 IoT Core verificherà che venga riavviata ogni volta che si arresta.

    Nota

    Quando un'app in background viene registrata per l'esecuzione automatica, se l'app viene chiusa o si arresta in modo anomalo, verrà riavviata automaticamente. L'app non viene informata del motivo per cui viene avviata o riavviata, quindi se vuoi eseguire un'azione speciale in un riavvio dovrai tenere traccia dello stato dell'app nella tua app.

  9. È possibile rimuovere l'applicazione in background dall'elenco di app di avvio headless digitando il comando :

    [<your IP address>]: PS C:\> iotstartup remove headless BackgroundApplication1

  10. L'utilità conferma che l'applicazione in background è stata rimossa dall'elenco di app di avvio headless:

    Removed headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee

Vedere anche

Per aggiungere un'app in background durante la compilazione di un'immagine personalizzata, vedere Creare un pacchetto Appx