2015-08-26 20 views
14

Mein Tablet läuft Windows 8.1 Pro.So starten Sie Hintergrundaufgabe beim Booten - Windows Store-App

Es hat eine Hintergrundaufgabe, die alle 15 Minuten von einem Zeitauslöser ausgelöst wird. Es funktioniert, fair genug.

Das Problem ist, dass ich meine Hintergrundaufgabe bei jedem Start (App starten) meines Geräts automatisch starten muss.

registriert ich meine bg durch diesen Code:

 builder.Name = "bikePositionUpdate"; 
     builder.TaskEntryPoint = "BackgroundTaskGps.BikeGPSPositionUpdateBackgroundTask"; 
     builder.SetTrigger(new TimeTrigger(15, false)); // 

     // adding condition 
     SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable); 
     SystemCondition userPresentCondition = new SystemCondition(SystemConditionType.UserPresent); 

     builder.AddCondition(internetCondition); 
     builder.AddCondition(userPresentCondition); 
     BackgroundTaskRegistration taskRegistration = builder.Register(); 

meine App Zugriff Bildschirm sperren

  await BackgroundExecutionManager.RequestAccessAsync(); 

Wie kann ich dies erreichen ist? Fehle ich etwas?

+0

Sie müssten einen Windows-Serivce hinzufügen, die automatisch gestartet werden würde. Wenn Sie ein WixProject erstellen, um dies zu installieren, können Sie es über das Installationsprogramm einrichten. –

Antwort

7

Sie müssen die SystemConditionType.SessionConnected Bedingung hinzufügen, diese Bedingung tritt jedes Mal auf, wenn sich der Benutzer bei Windows anmeldet.

Eine App muss auf dem Sperrbildschirm platziert werden, bevor Hintergrundaufgaben mit diesem Auslösertyp erfolgreich registriert werden können.

Edit:

Auf dieser URL Sie die offizielle Dokumentation finden, was Sie brauchen, und wie man es benutzt:

https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977056.aspx

https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.applicationmodel.background.systemtriggertype.aspx

+0

haben Sie es selbst ausprobiert? Ich habe bereits die sessionConnected-Bedingung verwendet und wenn ich mein Gerät neu starte, wird mein bg nicht mehr ausgelöst – eeadev

+0

ja, es funktioniert. aber Sie müssen Ihre App als Look-Bildschirm, bevor Sie dieses Verhalten registrieren können – frenk91

+0

Ich legte es auf dem Sperrbildschirm, finden Sie hier ein Beispiel https://onedrive.live.com/redir?resid=ABB4850356F0DF18!136&authkey=!ACrxYLekfdSb4 -c & ithint = Datei% 2c7z – eeadev

-1

Haben Sie versucht, Ihre Anwendung als Teil des Installationsprozesses zum Windows Taskplaner hinzuzufügen?

+0

Dachte, das könnte helfen. Hatte vor einer Weile ein ähnliches Problem. Nur damit du nicht annimmst, ich weiß nicht wovon ich spreche. Dies ist ein Ausschnitt, um meinen Cycler.exe zum Start von Windows hinzuzufügen. : 'System.Diagnostics.Process.Start ("Schtasks", @ "/ Erstellen/V1/F/RU" "NT-AUTORITÄT \ SYSTEM" "/ TN OEMcycler/SC ONSTART/TR% windir% \ system32 \ oobe \ info \ Hintergründe \ Cycler.exe "); ' – Jayrooi

+0

Wenn dies auf jemandes System in einer kommerziellen/kommerziellen Umgebung installiert oder verteilt werden soll, ist es nicht die richtige Lösung, es als eine geplante Aufgabe zu setzen. Sie müssten es als Windows-Dienst haben. –

+0

Einverstanden.In diesem Fall wäre ein benutzerdefiniertes Installationsprogramm ideal. – Jayrooi

2

Haben Sie versucht, es beim Start in der Registrierung zu starten?

Ich habe nicht 8.1 zu überprüfen, aber wenn nicht geändert von Win7 sollte der Pfad HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run (oder HKEY_LOCAL_MACHINE) nur einen neuen String-Wert mit dem Pfad zu Ihrer App erstellen und es wird ausgeführt werden, wenn Windows startet

+0

Nein, es funktioniert mit Desktop-Anwendungen, aber nicht mit Windows Store-Apps – eeadev

2

Ergebnis dieser await BackgroundExecutionManager.RequestAccessAsync(); sein sollte wie AllowedWithAlwaysOnRealTimeConnectivity.

Das bedeutet: Der Benutzer hat im Dialogfeld "Zulassen" gewählt. Die App wird zum Sperrbildschirm hinzugefügt, kann Hintergrundaufgaben einrichten.

Und das BackgroundTaskRegistration taskRegistration = builder.Register(); Sie sholud rufen nach await BackgroundExecutionManager.RequestAccessAsync();

3
I think you should add SystemConditionType.SessionConnected condition,where this condition will check every time theuser log on to Windows 
+0

hast du es selbst probiert? Ich habe bereits die sessionConnected-Bedingung verwendet und wenn ich mein Gerät neu starte, wird mein bg nicht mehr ausgelöst – eeadev

Verwandte Themen