gpt4 book ai didi

c# - Windows Phone 8.1后台任务无法注册后台任务

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:49 25 4
gpt4 key购买 nike

我刚刚从 https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9 下载了样本并尝试运行 windows phone 8.1 项目。该程序运行但即使我进行更改以触发事件也没有后台任务发生。我也不认为它会被注册为后台任务运行,因为我没有收到任何将应用程序添加到锁定屏幕的请求。而且我无法手动将应用程序添加到锁定屏幕。注意:使用 Lumia 730 和 8.1 Denim。

我也尝试自己用silverlight 8.1和背景作为RT组件编写了一个示例程序。

if (BackgroundTaskRegistration.AllTasks.Any(task => task.Value.Name == name))
{
// One register it once
return;
}
var builder = new BackgroundTaskBuilder();
var trigger = new SystemTrigger(SystemTriggerType.UserAway, false);
builder.Name = name;
builder.TaskEntryPoint = typeof(MyBackgroundTask.BackClass).FullName; builder.SetTrigger(trigger);

await BackgroundExecutionManager.RequestAccessAsync();
BackgroundTaskRegistration registration = builder.Register();
registration.Completed += RegistrationOnCompleted;

这里我也遇到了异常

        BackgroundTaskRegistration registration = builder.Register();

异常(exception)是运行时状态

> A first chance exception of type 'System.Exception' occurred in
> Project1.DLL

最佳答案

我找到了这个问题的解决方案:

  1. 为后台任务制作运行时 Windows Phone 8.1 项目

Windwos Phone Background Task

  1. 在您的后台任务项目中注册任务时:

    public async static void Register()
    {
    Debug.WriteLine("Registering geofence bg task");
    if (!IsTaskRegistered())
    {
    var result = await BackgroundExecutionManager.RequestAccessAsync();
    var builder = new BackgroundTaskBuilder();

    builder.Name = TaskName;
    builder.TaskEntryPoint = typeof(BackgroundTask.YourTaskName).FullName;
    builder.SetTrigger(new LocationTrigger(LocationTriggerType.Geofence));
    try
    {
    builder.Register();
    Debug.WriteLine("GeoFence Task Registered");
    }
    catch (Exception ex)
    {
    Debug.WriteLine("GeoFence Task Failed : " + ex.Message.ToString());
    }



    }
    else { }

    }

确保通过将其引用到后台项目名称来正确添加 TaskEntryPoint,它看起来像这样:“BackgroundTask.YourTaskName”

  1. builder.Name 参数的 TaskName 字符串应如下所示:

    静态字符串 TaskName = "BackgroundTask.YourTaskName";

  2. 在声明选项卡下的 appmanifest 中声明您的 TaskEntryPoint,这里我使用 GeofenceTask,所以我选中了任务所需的几个复选框:

Windwos Phone Background Task 2

在这里您再次输入 EntryPoint(如 TaskEntryPoint):“BackgroundTask.YourTaskName”

  1. 当您在应用中某处初始化任务时,您使用:

    BackgroundTask.YourTaskName.Register();

这都是关于任务的入口点。因此,如果您的任务在单独的项目下,就像它应该完成的那样,您必须输入该项目的名称和该项目下的后台任务类的名称。

不要只为您的 EntryPoint 使用后台任务类名称,您必须使用包含该类的项目名称来引用它。

希望对你有帮助,

关于c# - Windows Phone 8.1后台任务无法注册后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28467496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com