zoukankan      html  css  js  c++  java
  • Win10 BackgroundTask

    1.这里面详细的说明了后台任务的搭建 调用等

    提示:

    1.BackgroundTaskRegistration 里面有这两个事件 OnCompleted/Progress 主要用来UpdateUI

    这两个事件只允许在前台的时候使用,如果在后台的时候 你想通过事件回调你的更新磁贴方法是不可取的

    2.后台任务会根据timetrigger的时间启动后台轮训,这个时候一般是15分钟。

    也可以自己在添加一个类处理自己的启动更新磁贴方法

    3.有人会问为啥我的磁贴不更新。有很多原因 可能磁贴的模版写的不对,可能网络请求失败,重复请求同一个Url,可能写文件异常。等等吧。

    4.多Trigger 注册后台任务

                    IBackgroundTrigger timeTrigger = new TimeTrigger(15, false);
                    beginTask(GetRegisteredTilesTask, timeTrigger);
                    IBackgroundTrigger systemTrigger = new SystemTrigger(SystemTriggerType.ServicingComplete, false);
                    beginTask(GetRegisteredTilesTask, systemTrigger);
    
            private void beginTask(IBackgroundTaskRegistration backtask, IBackgroundTrigger trigger)
            {
                BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
                taskBuilder.Name = Const_def.TilesTaskName;
                taskBuilder.TaskEntryPoint = getTilesTask(typeof(TilesBackgroundTask));
                taskBuilder.SetTrigger(trigger);
    
                var internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
                taskBuilder.AddCondition(internetCondition);
    
                    BackgroundTaskRegistration task = taskBuilder.Register();
            }

    记得在清单里填写这两个Trigger type

    仔细查找打断点。授鱼不如授以渔。授渔不如亲自试,亲试不如有思想!记得有人这么说过,后两句忘记怎么说了。

    特别再次提醒一定要检查一下后台任务清单

    既适用于进程内后台任务,也适用于进程外后台任务

    • 将后台任务与正确的触发器关联。
    • 添加条件以帮助确保你的后台任务成功运行。
    • 处理后台任务进度、完成以及取消。
    • 在应用启动期间重新注册后台任务。 这可以确保在应用首次启动时注册它们。 它还提供了一种检测用户是否已禁用应用的后台执行功能的方法(如果事件注册失败)。
    • 检查是否存在后台任务注册错误。 如果适用,请尝试使用不同参数值来再次注册后台任务。
    • 对于除台式机以外的所有设备系列,如果设备内存不足,后台任务可能会终止。 如果没有呈现内存不足异常,或者应用没有处理该异常,则后台任务将在没有警告且不引发 OnCanceled 事件的情况下终止。 这有助于确保前台中应用的用户体验。 应该将后台任务设计为处理此情形。

    仅适用于进程外后台任务

    • 在 Windows 运行时组件中创建后台任务。
    • 不要通过后台任务显示 UI,但 Toast、磁贴以及锁屏提醒更新除外。
    • 在 Run 方法中,为每个异步方法调用请求延迟并在完成该方法时关闭它们。 或者,通过 async/await 使用一个延迟。
    • 使用永久性存储在后台任务与应用之间共享数据。
    • 在应用程序清单中声明每个后台任务及其使用的触发器类型。 确保入口点和触发器类型正确。
    • 不要在清单中指定 Executable 元素,除非使用的是应在与应用相同的上下文中运行的触发器(例如 ControlChannelTrigger)。

    仅适用于进程内后台任务

    • 当取消任务时,请确保 BackgroundActivated 事件处理程序退出后再取消,否则整个进程都将终止。
    • 编写生存时间较短的后台任务。 后台任务限制为在 30 秒的时钟时间内使用。
    • 不要依赖后台任务中的用户交互。

    启动项目需要做2步:

    1.在启动项项目添加后台任务引用

    2.在Package.appxmanifest 里添加后台事件 backgroundTasks 选择timer

    在后台项目需要做:

    1.output type :选择运行时组件

    2.public sealed

    在代码里需要做:

    1.选择你注册的触发器  IBackgroundTrigger timeTrigger = new TimeTrigger(15, false);

    2.注册 taskBuilder.Register();

  • 相关阅读:
    extern "C" 分析 转
    Python标准库3.4.3webbrowser21.1
    rxtx java lib /var/lock issue
    list installed package & remove installed package & find package from repository Archlinux
    eclipse initialize
    add repo for CentOS
    RPMforge for CentOS
    Install Core Development Tools
    [Qtcreator] CMake + Multiple Build configuration
    list installed package & remove installed package & find package from repository
  • 原文地址:https://www.cnblogs.com/androllen/p/6719292.html
Copyright © 2011-2022 走看看