none
UWP Background App - Windows 10 IoT Core auf Raspberry PI RRS feed

  • 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
    Dienstag, 1. September 2020 15:58

Antworten

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




    Dienstag, 1. September 2020 23:18
  • Hi Thomas,

    Ja Danke, meine Messungen möchte ich eh mit einem Task realisieren. Hmm.. könnte man die Perioidenzeit des Neustarts selbst definieren? 

    Mittwoch, 2. September 2020 16:15
  • 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

    Mittwoch, 2. September 2020 16:31
  • 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?  

    Freitag, 4. September 2020 12:21
  • 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

    Freitag, 4. September 2020 12:50
  • Ahh..cool, gleich mit Blazor Server. Könntest noch erweitern mit Webassembly für eine PWA und Realtime Messages.
    Freitag, 4. September 2020 13:48
  • 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

    Freitag, 4. September 2020 14:56