Uwp ejecuta backgroundtask al inicio de sesión del usuario

Estoy aprendiendo win10 uwp y mi objetivo es realizar una operación, como actualizar un mosaico, cuando el usuario inicia sesión.

He comprobado msdn y parece que un BackgroundTask es lo que necesito. Así que seguí las instrucciones para crear y registrar una tarea en segundo plano que se encuentra aquíhttps://msdn.microsoft.com/en-us/library/windows/apps/mt299100.aspx y en páginas relacionadas.

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();

Espacio de nombres y clase de miBackgroundTask se colocan en un proyecto separado bajo la misma solución y se agregan en la pestaña Declaración de Package.appxmanifest con propiedadSystem Event seleccionado.

MiIBackgroundTask la implementación es

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

        UpdateMyTile();

        deferral.Complete();
    }

Al depurar con Visual Studio, el código se ejecuta correctamente y actualiza los mosaicos, así que creo que mi problema es cómo registré la tarea y no en la implementación de la tarea.

Para estar seguro, he agregado un segundoBackgroundTask al proyecto existente que se llama por temporizador cada 15 minutos y que ejecuta las mismas funciones. En este segundo caso, la tarea en segundo plano se registra y se ejecuta como se esperaba.

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

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

var registration= taskBuilderT.Register();

También he intentado usar solo unoSystemTrigger primero conUserPresent y luego conSessionConnected sin éxito.

Actualización 27/01/2016

@Jakie: no, no uséBackgroundExecutionManager.RequestAccessAsync(); porque enhttps://msdn.microsoft.com/EN-US/library/windows/apps/windows.applicationmodel.background.systemtriggertype.aspx para SessionConnected y UserPresent dice

Windows 10, Windows Server 2016 Technical Preview y Windows 10 Mobile: no es necesario colocar una aplicación en la pantalla de bloqueo antes de que la aplicación pueda registrar correctamente las tareas en segundo plano con este tipo de disparador.

Lo intentaré para ver si esto cambia el comportamiento actual. He agregado llamada aBackgroundExecutionManager.RequestAccessAsync();, usando Windows 10 no se ha mostrado ningún cuadro de diálogo pero ha regresadoAllowedMayUseActiveRealTimeConnectivity pero la tarea no se llamó al iniciar sesión después de reiniciar.

Comencé el registro de diagnóstico y encontré los eventos relacionados con mi tarea en segundo plano, está registrada correctamente pero luego se cancela. Los informes de eventos indican eventID 19 Tarea 100. No sé dónde buscar información sobre el significado de estos códigos, ¿alguna sugerencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta