Uwp Hintergrundtask bei Benutzeranmeldung ausführen

Ich lerne win10 uwp und mein Ziel ist es, einen Vorgang wie das Aktualisieren einer Kachel auszuführen, wenn sich der Benutzer anmeldet.

Ich habe msdn überprüft und es scheint, dass eine BackgroundTask das ist, was ich brauche. Also habe ich die Anweisungen befolgt, um eine Hintergrundaufgabe zu erstellen und zu registrierehttps: //msdn.microsoft.com/en-us/library/windows/apps/mt299100.asp und auf verwandten Seiten.

BackgroundTaskBuilder taskBuilder= new BackgroundTaskBuilder();
taskBuilder.Name = "TaskClassName";
taskBuilder.TaskEntryPoint = "TaskNameSpace.TaskClassName";

// set conditions (execute when user become present)
taskBuilder.SetTrigger(new SystemTrigger(SystemTriggerType.SessionConnected, false));
taskBuilder.SetTrigger(new SystemTrigger(SystemTriggerType.UserPresent, false));

   var registration= taskBuilder.Register();

Namespace und Klasse meinesBackgroundTask werden in einem separaten Projekt unter derselben Lösung abgelegt und auf der Registerkarte Deklaration von Package.appxmanifest mit der Eigenschaft @ hinzugefügSystem Event ausgewählt

MyIBackgroundTask Implementierung ist

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

        UpdateMyTile();

        deferral.Complete();
    }

Wenn Sie mit Visual Studio debuggen, wird der Code korrekt ausgeführt und die Kacheln aktualisiert, sodass ich der Meinung bin, dass mein Problem darin besteht, wie ich die Aufgabe registriert habe und nicht in der Aufgabenimplementierung.

Um sicher zu gehen, dass ich ein zweites @ hinzugefügt haBackgroundTask zu einem bestehenden Projekt, das alle 15 Minuten auf Timer-Basis aufgerufen wird und die gleichen Funktionen ausführt. In diesem zweiten Fall wird die Hintergrundaufgabe registriert und wie erwartet ausgeführt.

BackgroundTaskBuilder taskBuilderT= new BackgroundTaskBuilder();
taskBuilderT.Name = "TaskClassNameTimer";
taskBuilderT.TaskEntryPoint = "TaskNameSpace.TaskClassNameTimer";

taskBuilderT.SetTrigger(new TimeTrigger(15, false));

var registration= taskBuilderT.Register();

Ich habe auch versucht, nur eineSystemTrigger zuerst mitUserPresent und dann mitSessionConnected ohne Erfolg

Update 27/01/2016

@ Jakie: nein ich habe @ nicht benutBackgroundExecutionManager.RequestAccessAsync(); weil amhttps: //msdn.microsoft.com/EN-US/library/windows/apps/windows.applicationmodel.background.systemtriggertype.asp für SessionConnected und UserPresent sagt

Windows 10, Windows Server 2016 Technical Preview und Windows 10 Mobile: Sie müssen keine App auf dem Sperrbildschirm platzieren, bevor die App Hintergrundaufgaben mit diesem Auslösertyp erfolgreich registrieren kann.

Ich werde es versuchen, um zu sehen, ob sich das aktuelle Verhalten ändert. Ich habe einen Anruf zu @ hinzugefüBackgroundExecutionManager.RequestAccessAsync();, unter Windows 10 wurde kein Dialogfeld angezeigt, aber es wurde @ zurückgegebAllowedMayUseActiveRealTimeConnectivity aber Task wurde nach einem Neustart beim Login nicht aufgerufen.

Ich habe das Diagnoseprotokoll gestartet und die Ereignisse in Bezug auf meine Hintergrundaufgabe gefunden. Es ist ordnungsgemäß registriert, wird jedoch abgebrochen. Ereignisberichte sagen eventID 19 Aufgabe 100. Ich weiß nicht, wo ich nach Informationen über die Bedeutung dieser Codes suchen soll. Irgendwelche Vorschläge?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage