Entwickeln von Hintergrundanwendungen

Hinweis

Visual Studio generiert beim Bereitstellen auf einem RS5-IoT-Image (oder RS4 mit OpenSSH-Aktivierung) einen kryptischen Fehler, sofern kein SDK für RS4 oder höher installiert ist, auf das Visual Studio zugreifen kann.

Hintergrundanwendungen sind Anwendungen, die keine direkte Benutzeroberfläche haben. Nach der Bereitstellung und Konfiguration starten diese Anwendungen beim Computerstart und führen sie kontinuierlich ohne Einschränkungen für die Prozesslebensdauerverwaltung aus. Wenn sie abstürzen oder beenden, wird das System automatisch neu gestartet. Diese Hintergrundanwendungen verfügen über ein sehr einfaches Ausführungsmodell. Die Vorlagen erstellen eine Klasse, die die Schnittstelle "IBackgroundTask" implementiert und die leere "Run"-Methode generiert. Diese "Run"-Methode ist der Einstiegspunkt für Ihre Anwendung.

Hintergrundaufgabe

Es gibt einen wichtigen Hinweis: Standardmäßig wird die Anwendung heruntergefahren, wenn die Ausführungsmethode abgeschlossen ist. Dies bedeutet, dass Apps, die dem allgemeinen IoT-Muster folgen, einen Server ausführen, der auf Eingabe wartet oder auf einem Timer die App vorzeitig beendet. Um dies zu verhindern, müssen Sie die Methode "GetDeferral" aufrufen, um zu verhindern, dass die Anwendung beendet wird. Weitere Informationen zum Verzögerungsmuster finden Sie hier.

Wo können Hintergrundanwendungen installiert werden?

Sie können IoT-Vorlagen herunterladen und installieren, um Hintergrundanwendungen aus dem Visual Studio-Katalog hier zu aktivieren. Alternativ finden Sie die Vorlagen, indem Sie im Visual Studio-Katalog oder direkt aus Visual Studio im Dialogfeld "Erweiterung" und "Aktualisierungen" (Tools-Erweiterungen > und Aktualisierungen > Online) suchenWindows IoT Core Project Templates.

Welche Sprachen sind verfügbar?

Hintergrundanwendungsvorlagen (IoT) finden Sie unter:

  • 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

Wie werden Hintergrundanwendungen verwendet?

Das Erstellen einer Hintergrundanwendung ähnelt dem Erstellen einer Hintergrundaufgabe. Wenn die Hintergrundanwendung gestartet wird, wird die Run-Methode aufgerufen:

public void Run(IBackgroundTaskInstance taskInstance)
{
}

Wenn die Run-Methode endet, wird die Hintergrundanwendung beendet, es sei denn, ein Zurückstellungsobjekt wird erstellt. Die gängige Praxis für die asynchrone Programmierung besteht darin, eine Verzögerung wie folgt zu ergreifen:

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

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

Sobald eine Verzögerung erfolgt, wird die Hintergrundanwendung fortgesetzt, bis die Complete-Methode des Complete-Objekts aufgerufen wird.

deferral.Complete();

Wie starten Hintergrundanwendungen?

Diese Frage kann in Bereitstellung und Aufruf unterteilt werden.

Um eine Hintergrundanwendung bereitzustellen, können Sie entweder:

  • Verwenden Sie die F5 von Visual Studio (die erstellt, bereitgestellt und aufgerufen wird). Weitere Informationen finden Sie in unserem Hallo Welt Beispiel, in dem wir beschreiben, wie Sie Visual Studio bereitstellen und starten.

Hinweis

Dadurch wird Ihre Hintergrundanwendung nicht so konfiguriert, dass sie gestartet wird, wenn das Gerät gestartet wird.

  • Erstellen Sie ein AppX in Visual Studio, indem Sie Project > Store-App-Pakete > erstellen. Nachdem Sie ein AppX erstellt haben, können Sie das Windows-Geräteportal verwenden, um es auf Ihrem Windows 10 IoT Core Gerät bereitzustellen.

Um eine Hintergrundanwendung aufzurufen, können Sie eine der folgenden Aktionen ausführen:

  • Wie oben erwähnt, wird die F5-Funktionalität von Visual Studio bereitgestellt und sofort ihre Hintergrundanwendung gestartet.

Hinweis

Dadurch wird Ihre Hintergrundanwendung nicht so konfiguriert, dass sie gestartet wird, wenn das Gerät gestartet wird.

  • Für eine Hintergrundanwendung, die auf einem IoT-Gerät bereitgestellt wurde, können Sie das iotstartup.exe Dienstprogramm verwenden, um Ihre Hintergrundanwendung so zu konfigurieren, dass sie beim Starten des Geräts gestartet wird. Wenn Sie Ihre Hintergrundanwendung als Start-App angeben möchten, befolgen Sie die folgenden Anweisungen (ersetzen Sie den Namen Ihrer App nach BackgroundApplication1 unten):
  1. Starten Sie eine PowerShell-Sitzung (PS) mit Ihrem Windows IoT Core-Gerät, wie hier beschrieben.

  2. Geben Sie in der PS-Sitzung Folgendes ein:

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

  3. Sie sollten den vollständigen Namen Ihrer Hintergrundanwendung sehen, d. h. etwa:

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

  4. Das Dienstprogramm bestätigt, dass ihre Hintergrundanwendung eine "Headless"-Anwendung ist und ordnungsgemäß installiert ist. Wahrscheinlich wird auch ein Eintrag "Kopf" für Ihre Hintergrundanwendungen angezeigt, dies kann jedoch ignoriert werden.

  5. Jetzt ist es einfach, diese App als "Start-App" festzulegen. Geben Sie einfach den Befehl ein:

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

  6. Das Dienstprogramm bestätigt, dass Ihre Hintergrundanwendung der Liste der kopflosen "Start-Apps" hinzugefügt wurde:

    Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1

  7. Fahren Sie fort, und starten Sie Ihr Windows IoT Core-Gerät neu. Aus der PS-Sitzung können Sie den Herunterfahren-Befehl ausstellen:

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

  8. Sobald das Gerät neu gestartet wurde, wird Ihre Hintergrundanwendung automatisch gestartet, und Windows 10 IoT Core stellen Sicher, dass es jederzeit neu gestartet wird.

    Hinweis

    Sobald eine Hintergrund-App automatisch ausgeführt wird, wird sie automatisch gestartet, wenn die App beendet oder abstürzt. Die App wird nicht über den Grund informiert, warum sie gestartet oder neu gestartet wird, sodass Sie besondere Aktionen für einen Neustart ausführen möchten, müssen Sie den App-Zustand in Ihrer App nachverfolgen.

  9. Sie können Ihre Hintergrundanwendung aus der Liste der kopflosen Start-Apps entfernen, indem Sie den Befehl eingeben:

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

  10. Das Dienstprogramm bestätigt, dass Ihre Hintergrundanwendung aus der Liste der kopflosen "Start-Apps" entfernt wurde:

    Removed headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee

Weitere Informationen

So fügen Sie beim Erstellen eines benutzerdefinierten Bilds eine Hintergrund-App hinzu