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%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.
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.
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:
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.
Tags und Links c# windows-8 microsoft-metro