none
为什么我的后台任务注册一直不行? RRS feed

  • 问题

  • 注册后台任务的代码:

    public async static Task<BackgroundTaskRegistration> RegisterBackgroundTask(string taskEntryPoint,
                                                                            string taskName,
                                                                            IBackgroundTrigger trigger,
                                                                            IBackgroundCondition condition)
            {
                foreach (var cur in BackgroundTaskRegistration.AllTasks)
                {
                    if (cur.Value.Name == taskName)
                    {
                        return (BackgroundTaskRegistration)(cur.Value);
                    }
                }
                await BackgroundExecutionManager.RequestAccessAsync();
                var builder = new BackgroundTaskBuilder();
    
                builder.Name = taskName;
                builder.TaskEntryPoint = taskEntryPoint;
                builder.SetTrigger(trigger);
    
                if (condition != null)
                {
                    builder.AddCondition(condition);
                }        
                BackgroundTaskRegistration task = builder.Register();
                return task;
            }


    var task = RegisterBackgroundTask(
                        "BackgroundUpdater.BackgroundTaskSample",
                        "bkTaskSample",
                        new SystemTrigger(SystemTriggerType.NetworkStateChange, false),
                        null);
    await task;

    可是在运行以后,注册后台任务执行以后,生命周期管理器里显示的是“无后台任务”,这是怎么回事?

    2014年12月27日 7:22

答案

  • 你好 Asinta,

    >>可是在运行以后,注册后台任务执行以后,生命周期管理器里显示的是“无后台任务”,这是怎么回事

    首先,你的入口点填写有问题,应该是 BackgroundUpdater.BackgroundTaskSample.bkTaskSample

    其次,根据我的测试,对于NetworkStateChange这个Trigger,就算注册成功,也不会显示在Lyfecycle Events下拉列表中的(VS2013 Update3 and Update4)。

    官方的Sample是使用ServicingComplete 和 ServicingComplete这两种Trigger: https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9 经过测试,是可以显示在列表中的:


    对于你的代码,我这边建了一个小Demo,你可以下载查看,我的Background Task是放在一个Runtime组件中的,注册后,修改网络状态,可以触发Task: http://1drv.ms/1td89xw


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Asinta 2015年1月4日 11:25
    2014年12月29日 7:54
    版主

全部回复

  • 你好 Asinta,

    >>可是在运行以后,注册后台任务执行以后,生命周期管理器里显示的是“无后台任务”,这是怎么回事

    首先,你的入口点填写有问题,应该是 BackgroundUpdater.BackgroundTaskSample.bkTaskSample

    其次,根据我的测试,对于NetworkStateChange这个Trigger,就算注册成功,也不会显示在Lyfecycle Events下拉列表中的(VS2013 Update3 and Update4)。

    官方的Sample是使用ServicingComplete 和 ServicingComplete这两种Trigger: https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9 经过测试,是可以显示在列表中的:


    对于你的代码,我这边建了一个小Demo,你可以下载查看,我的Background Task是放在一个Runtime组件中的,注册后,修改网络状态,可以触发Task: http://1drv.ms/1td89xw


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Asinta 2015年1月4日 11:25
    2014年12月29日 7:54
    版主
  • 非常感谢耐心的解答!我下载下来好好学习下。
    2015年1月4日 11:25