我需要在我的应用程序中实现地理围栏后台任务。我主要使用了MSDN中地理围栏示例中的代码。无论我在做什么,它总是以App.g.i.cs调试器结尾,同时尝试获取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;
    }

最佳答案

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

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

关于c# - Windows Phone 8.1中的地理围栏后台任务-无法从BackgroundExecutionManager请求访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25601244/

10-13 09:03