2

我需要在我的应用程序中实现地理围栏后台任务。我主要使用了来自 MSDN 地理围栏示例的代码。无论我在做什么,它总是在 App.gics 调试器中结束,同时尝试获取 BackgroundExecutionManager 访问权限。

    public async static void Register()
    {
        if (!IsTaskRegistered())
        {
            var result = await BackgroundExecutionManager.RequestAccessAsync();
            var builder = new BackgroundTaskBuilder();

            builder.Name = TaskName;
            builder.TaskEntryPoint = typeof(GeofenceTask).FullName;
            builder.SetTrigger(new LocationTrigger(LocationTriggerType.Geofence));

            builder.Register();
        }
    }

它永远不会进入 var builder = new BackgroundTaskBuilder(); - 总是在之前结束。我可能做错了什么?

顺便提一句。IsTaskRegistered() 工作正常,但以防万一:

    public static bool IsTaskRegistered()
    {
        var taskRegistered = false;
        var entry = BackgroundTaskRegistration.AllTasks.FirstOrDefault(kvp => kvp.Value.Name == TaskName);

        if (entry.Value != null)
            taskRegistered = true;

        return taskRegistered;
    }
4

1 回答 1

1

如果您没有在应用程序清单中声明任何后台任务,则可能会发生这种情况。

您需要转到声明选项卡,然后添加一个具有位置类型的新后台任务,并像这样填写它的“入口点”:“BackgroundTask.GeofenceTask”。“可执行文件”和“起始页”应为空。

于 2014-09-01T19:27:49.847 回答