Kann eine zeitgesteuerte Hintergrundaufgabe nicht registrieren

8

Bei einer Windows 8 App versuche ich in C # / Xaml eine Hintergrundaufgabe zu registrieren. Es ist schwer zu sagen, aber ich denke, dass meine Hintergrundaufgabe gut registriert ist, aber wenn ich auf den Namen der Hintergrundaufgabe in der Debug Location Toolbar klicke, funktioniert meine App ohne Nachricht.

Ich schaute auf das Protokoll in der Ereignisanzeige und ich bekomme: "Die Hintergrundaufgabe mit Einstiegspunkt MyApp.Pages.SampleBackgroundTask und Name Beispiel stündlich Hintergrundaufgabe konnte nicht mit Fehlercode 0x80010008 aktiviert werden."

Hier ist mein Code:

%Vor%

Ich habe das im Manifest hinzugefügt:

%Vor%

Habe ich etwas vergessen?

Danke für Ihre Hilfe.

EDIT: hier ist der Code meiner Aufgabe, innerhalb einer meiner Projektseite:

%Vor%     
Astiron Naviir 24.10.2012, 15:18
quelle

5 Antworten

6

Ich hatte dieses Problem auch. Ich hatte auch meine im selben Projekt. Ich habe es endlich zum Laufen gebracht, indem ich die Aufgabe in ein separates Projekt verlagerte. Ich musste die Projektausgabe als Windows-Laufzeitkomponente einstellen (unter Registerkarte Eigenschaften-Anwendung). Vergessen Sie auch nicht, das Projekt als Referenz hinzuzufügen.

    
Bradley 12.11.2012 03:19
quelle
3

Sie benötigen Benutzerrechte, bevor Sie eine BackgroundTask ausführen können. Sie können dies entweder manuell tun: Öffnen Sie die App, klicken Sie im Charm "Einstellungen" auf Berechtigungen und aktivieren Sie die Einstellung "Bildschirm sperren" auf "Ein".

Sie können den Benutzer auch fragen, wenn der erste Bildschirm mit diesem geladen wird:

%Vor%

Unnötig zu sagen, dass Letzteres zu einer viel besseren Benutzererfahrung führen wird.

    
Tim 27.12.2012 09:15
quelle
3

Zwei Jahre später, jetzt WinRT in Windows 10, Visual Studio 2015. Noch einmal, das gleiche Problem.

Der Fragesteller hat angegeben, dass sich seine Hintergrundaufgabe im selben Projekt befunden hat. Das wird nicht funktionieren: Ein sehr gründlicher Artikel über Hintergrundaufgaben ist hier . Wie Tim bereits bemerkt hat, muss BackgroundExecutionManager.RequestAccessAsync () zuerst aufgerufen werden. Seit 8.1 jedoch, wenn dies weggelassen wird, die Hintergrund-Task-Registrierung wird in diesem Fall fehlschlagen , sodass Sie niemals an den Ort gelangen, an dem der Task-Trigger fehlschlägt.

Um die Anforderungen zusammenzufassen:

  • 'warte auf BackgroundExecutionManager.RequestAccessAsync ()' first
  • Die Taskklasse muss sich in einem Windows Runtime Component-Projekt befinden
  • Auf das Windows-Runtime-Komponentenprojekt muss in der aufrufenden App
  • verwiesen werden
  • Die Aufgabenklasse muss wie oben im App-Manifest deklariert sein, mit vollem Namensraumnamen
  • Das Windows Runtime Component-Projekt und die App, die es verwendet, müssen auf die gleiche Windows-Version abzielen. Projektmappen-Explorer in Visual Studio - & gt; Klicken Sie mit der rechten Maustaste auf das Projekt - & gt; Eigenschaften - & gt; Anwendung bzw. Bibliotheksregisterkarte - & gt; Ausrichtung - & gt; Ziel- und Zielversion.

In meinem Beispiel hatte ich definitiv alle diese Aufgaben erledigt, aber die Aufgabe wurde nicht ausgelöst. Der Debug-Trace zeigte "Das Programm '[0x72C] backgroundTaskHost.exe' ist mit Code 1 beendet", der Debugger brach bei einer ExecutionEngineException und das Ereignisprotokoll des Zielcomputers (Anwendungs- und Dienstprotokolle - & gt; Microsoft - & gt; Windows) ab - & gt; BackgroundTaskInfrastructure - & gt; Operational) listet alle Arten von kreativen, völlig undokumentierten Windows-Fehlercodes auf:

"Die Hintergrundaufgabe mit Einstiegspunkt und Namen konnte nicht mit dem Fehlercode 0x8007001F (bzw. 0x800706BE / 0x80131509) aktiviert werden."

Die Fehler waren unberechenbar: Zuerst traten sie nur selten auf und verschlechterten sich über mehrere aufeinanderfolgende Programmläufe, bis die Hintergrundaufgabe nie mehr aufgerufen wurde.

Wenn der Namespace-Name der Hintergrundaufgaben geändert wurde (in der gesamten Aufgabenregistrierung, im Paketmanifest und im Code), behob sich der Fehler zunächst und wurde dann auch im Laufe der Zeit schlechter.

Der besondere Fall in diesem Fall war, dass die App auf einem Remote-Zielcomputer entwickelt und mit dem Remote-Debugger debuggt wurde. Das Entfernen des App-Pakets vor jedem Debugger-Lauf löste die Fehler.

Diese Fehler beim Ausführen einer Hintergrundaufgabe (0x8007001F / 0x800706BE / 0x80131509) scheinen damit zu tun zu haben, die registrierte Aufgabe nicht korrekt zu finden. Es kann hilfreich sein, sicherzustellen, dass die Aufgabe ordnungsgemäß abgemeldet wird, und das App-Paket zu entfernen, bevor eine neue Änderung ausgeführt wird. Powershell-Befehl:

%Vor%

Dokumentieren Sie dies hier für den Fall, dass jemand das gleiche Problem hat.

    
J S 05.05.2016 08:55
quelle
2

Fügen Sie Ihr Hintergrundaufgaben-Projekt zum Referenzprojekt und zum Neuaufbau hinzu. es wird funktionieren

    
RaymondLe 27.01.2013 09:02
quelle
0

Das Problem, das ich beim Schreiben von Hintergrundaufgaben hatte, war, dass ich in Windows 10 unter Einstellungen- & gt; Datenschutz- & gt; Hintergrund-Apps die Option aktivieren musste, damit Apps im Hintergrund laufen konnten. Hoffe das hilft jemandem!

    
bdwhat 27.02.2018 11:37
quelle

Tags und Links