UWP выполнить backgroundtask при входе пользователя

Я изучаю win10 uwp, и моя цель - выполнить операцию, например обновить плитку, когда пользователь входит в систему.

Я проверил на MSDN и кажется, что мне нужна BackgroundTask. Поэтому я следовал инструкциям по созданию и регистрации фоновой задачи, найденной здесь.https://msdn.microsoft.com/en-us/library/windows/apps/mt299100.aspx и на связанных страницах.

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

Пространство имен и класс моегоBackgroundTask помещаются в отдельный проект под тем же решением и добавляются во вкладку «Объявление» Package.appxmanifest со свойствомSystem Event выбран.

мойIBackgroundTask реализация

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

        UpdateMyTile();

        deferral.Complete();
    }

При отладке в Visual Studio код запускает correclty и обновляет плитки, поэтому я думаю, что моя проблема в том, как я зарегистрировал задачу, а не в ее реализации.

Чтобы быть уверенным, я добавил вторуюBackgroundTask в существующий проект, который вызывается по таймеру каждые 15 минут и выполняет те же функции. Во втором случае фоновая задача регистрируется и выполняется как ожидается.

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

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

var registration= taskBuilderT.Register();

Я также пытался использовать только одинSystemTrigger сначала сUserPresent а затем сSessionConnected безуспешно.

Обновление 27/01/2016

@Jakie: нет, я не использовалBackgroundExecutionManager.RequestAccessAsync(); потому что наhttps://msdn.microsoft.com/EN-US/library/windows/apps/windows.applicationmodel.background.systemtriggertype.aspx для SessionConnected и UserPresent говорит

Windows 10, Windows Server 2016 Technical Preview и Windows 10 Mobile. Вам не нужно размещать приложение на экране блокировки, чтобы приложение могло успешно зарегистрировать фоновые задачи с использованием этого типа триггера.

Я собираюсь попробовать это, чтобы видеть, изменяет ли это текущее поведение. Я добавил вызовBackgroundExecutionManager.RequestAccessAsync();с использованием windows 10 диалог не отображался, но вернулсяAllowedMayUseActiveRealTimeConnectivity но задача не была вызвана при входе в систему после перезагрузки.

Я запустил диагностический журнал и нашел события, относящиеся к моей фоновой задаче, он правильно зарегистрирован, но затем отменяется. В отчетах о событиях указывается eventID 19 Задача 100. Я не знаю, где искать информацию о значении этих кодов, есть предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос