我需要在我的应用程序中实现地理围栏后台任务。我主要使用了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/