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 werden kontinuierlich ohne Einschränkungen der Ressourcennutzung der Prozesslebensdauer-Verwaltung ausgeführt. Wenn sie abstürzen oder das System beenden, werden sie 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.
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 Eingaben wartet oder auf einem Timer darauf wartet, dass die App vorzeitig beendet wird. Um dies zu verhindern, müssen Sie die "GetDeferral"-Methode 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 Updates" (Extras > Erweiterungen und Updates > Online) suchenWindows IoT Core Project Templates
.
Welche Sprachen sind verfügbar?
Vorlagen für Hintergrundanwendung (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 Basic
File > New > Project > Installed > Visual Basic > Windows > Windows IoT Core
- JavaScript
File > 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 Verzögerungsobjekt wird erstellt. Die gängige Methode für die asynchrone Programmierung besteht darin, eine Verzögerung wie folgt zu übernehmen:
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 Zurückstellungsobjekts aufgerufen wird.
deferral.Complete();
Wie starten Hintergrundanwendungen?
Diese Frage kann in die Bereitstellung und den Aufruf unterteilt werden.
Zum Bereitstellen einer Hintergrundanwendung können Sie eine der folgenden Aktionen ausführen:
- Verwenden Sie das F5 von Visual Studio (das erstellt, bereitgestellt und aufgerufen wird). Weitere Informationen finden Sie in unserem Hallo Welt Beispiel, in dem beschrieben wird, 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 es mithilfe des Windows Device Portal auf Ihrem Windows 10 IoT Core-Gerät bereitstellen.
Zum Aufrufen einer Hintergrundanwendung können Sie eine der folgenden Aktionen ausführen:
- Wie bereits erwähnt, wird die F5-Funktionalität von Visual Studio bereitgestellt und sofort mit der 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 Hilfsprogramm iotstartup.exe verwenden, um die Hintergrundanwendung so zu konfigurieren, dass sie gestartet wird, wenn das Gerät gestartet wird. Um Ihre Hintergrundanwendung als Start-App anzugeben, befolgen Sie die folgenden Anweisungen (ersetzen Sie den Namen Ihrer App für
BackgroundApplication1
folgendes):
Starten Sie eine PowerShell (PS)-Sitzung mit Ihrem Windows IoT Core-Gerät, wie hier beschrieben.
Geben Sie in der PS-Sitzung Folgendes ein:
[<your IP address>]: PS C:\> iotstartup list BackgroundApplication1
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
Das Hilfsprogramm bestätigt, dass ihre Hintergrundanwendung eine "headless"-Anwendung ist und ordnungsgemäß installiert ist. Wahrscheinlich wird auch ein Eintrag "Spitzen" für Ihre Hintergrundanwendungen angezeigt, dies kann jedoch ignoriert werden.
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
Das Hilfsprogramm bestätigt, dass Ihre Hintergrundanwendung zur Liste der kopflosen "Start-Apps" hinzugefügt wurde:
Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1
Fahren Sie fort, und starten Sie Ihr Windows IoT Core-Gerät neu. In der PS-Sitzung können Sie den Befehl zum Herunterfahren ausstellen:
[<your IP address>]: PS C:\> shutdown /r /t 0
Nachdem das Gerät neu gestartet wurde, wird Ihre Hintergrundanwendung automatisch gestartet, und Windows 10 IoT Core stellt sicher, dass es jederzeit neu gestartet wird.
Hinweis
Sobald eine Hintergrund-App für die automatische Ausführung registriert wurde, wird sie automatisch neu gestartet, wenn die App beendet oder abstürzt. Die App wird nicht über den Grund informiert, warum sie gestartet oder neu gestartet wird. Wenn Sie also spezielle Maßnahmen für einen Neustart ergreifen möchten, müssen Sie den App-Zustand in Ihrer App nachverfolgen.
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
Das Hilfsprogramm 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