Benutzer mit den meisten Antworten
UWP Background App - Windows 10 IoT Core auf Raspberry PI

Frage
-
Hallo,
Habe mich mit der Background App in Visual Studio beschäftigt, da ich eventuell eine API mit Sensorwerten damit am RaspberryPI laufen lassen werde. Habe testweise ein Debug.Writeln("..") in die Methode gepackt um das mal zu testen.
Fazit: Sie wird nur einmal durchlaufen, dann startet die App nicht mehr. Habe das Debug.Writeln("...") in eine While(true) schleife gepackt und es funktioniert .. wird ständig wiederholt .. klar., Aber ist das der Richtige Weg mit der While-Schleife die Background App am Leben zu erhalten??
public sealed class StartupTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { While(true) { Debug.WriteLine("..."); } } }
- Bearbeitet Reiter86 Dienstag, 1. September 2020 15:59 Rechschreibfehler
Antworten
-
Nur bedingt. Wann der richtige Zeitpunkt ist entscheiden am ende Windows.
Das ganze ist eh für App Update gedacht. Es gibt eigentlich 2 Szenarien die damit abgedeckt werde.
Periodisch alle X min (min 15min) +- einer Differenz die das System für richtig findet. Wenn nach 15min das System viel zutun hat, startet es den BackroundTask eben später.
Start bei einem Ereignis. Z.B. wenn eine Internetverbindung wieder besteht um z.B. die lokale Datenbank zu aktualisieren.
Wie lange der Task laufen darf entscheidet aber auch das System ist der Task bis dahin nicht fertig, wird er einfach gekillt.
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 28. September 2020 14:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Dienstag, 13. Oktober 2020 07:07
Alle Antworten
-
Hallo Reiter,
der BackgroundTask wird für periodisch Ereignisse verwendet nicht für dauerhafte. Ein BackgroundTask wir normalerweise nach x Sekunden vom System beendet und darf erst nach frühestens 15min wieder starten.
Auch wenn bei IoT das System ganz dir gehört, würde ich das dennoch nicht so machen. Sondert alles innerhalb einer App lösen mit z.B. mehreren Threads. So hast Du über alles die volle Kontrolle
Task.Run(() => StarteMessung());
Wenn überhaupt würde ich eine .NET Core Consolen App schreiben und diese auf dem PI starten.
Ich habe mir z.B. eine Schmelz und Brennofen gebaut und eine App dazu geschrieben. Die App muss natürlich immer auf die Usereingabe reagieren aber dennoch im Hintergrund einige Sensoren abfragen und die Heizwendeln anfeuern :) Das alle klappt mit mehren Threads sehr gut.
Ich arbeite aber fast nur mit Raspbian und ASP.NET Core. Das coole ist das ich den Brennofen sogar unterwegs über Internet und von jedem Device überwachen kann
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings
- Bearbeitet Thomas Wycichowski Dienstag, 1. September 2020 23:25
-
Nur bedingt. Wann der richtige Zeitpunkt ist entscheiden am ende Windows.
Das ganze ist eh für App Update gedacht. Es gibt eigentlich 2 Szenarien die damit abgedeckt werde.
Periodisch alle X min (min 15min) +- einer Differenz die das System für richtig findet. Wenn nach 15min das System viel zutun hat, startet es den BackroundTask eben später.
Start bei einem Ereignis. Z.B. wenn eine Internetverbindung wieder besteht um z.B. die lokale Datenbank zu aktualisieren.
Wie lange der Task laufen darf entscheidet aber auch das System ist der Task bis dahin nicht fertig, wird er einfach gekillt.
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 28. September 2020 14:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Dienstag, 13. Oktober 2020 07:07
-
Hab gelesen, dass man einen Timer setzen kann.
http://thinglabs.io/workshop/thingy-4-windows/hello-windows-iot/
Aber wenn das sowieso nur ein "ausgelagerter Task" ist hat funktioniert mein vorhaben sowieso nicht.
zu deinem Ofen ;): Wie steuerst du diesen übers Internet? Http Response/Request oder gar eine Homepage welche parallel läuft?
-
Die Homepage mit ASP.NET Core ist die App. In ASP.NET Core kann man Dienste als Singleton übergeben die dann dauerhaft im Hintergrund ausgeführt werden. Aus .NET Core kann man natürlich auf die GPIO zugreifen und die ganzen anderen Interfaces.
Das Projekt selbst ist Open Source. Ich hatte bisher noch nicht die die Zeit es ausgibt zu testen, es zu Dokumentieren und aufzuräumen. Du kannst gern mal reinschauen Oven
Das ganze läuft mit Raspbian natürlich auch auf dem RPI 4
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings -
Ich bevorzuge eigentlich immer Webassembly aber bei dem Projekt finde ich Blazor Server besser
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings