加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows 8.1 应用开发后台任务简介

发布时间:2016-10-21 06:04:10 所属栏目:Windows 来源:网络整理
导读:说到后台任务,这是在和许多 Android 开发者聊天的时候,经常被提起的话题之一, Windows 移动平台的后台任务的形式有别与 Android 的后台 service,简单的说在

这里有一个注册后台代理的代码给大家参考下(可以直接使用。 注:这里的 condition 其实是支持添加多个的)

//
// Register a background task with the specified taskEntryPoint, name, trigger,
// and condition (optional).
//
// taskEntryPoint: Task entry point for the background task.
// taskName: A name for the background task.
// trigger: The trigger for the background task.
// condition: Optional parameter. A conditional event that must be true for the task to fire.
//
public static BackgroundTaskRegistration RegisterBackgroundTask(string taskEntryPoint,
                                                                string taskName,
                                                                IBackgroundTrigger trigger,
                                                                IBackgroundCondition condition)
{
    //
    // Check for existing registrations of this background task.
    //
   
    foreach (var cur in BackgroundTaskRegistration.AllTasks)
    {
   
        if (cur.Value.Name == taskName)
        {
            // 
            // The task is already registered.
            // 
   
            return (BackgroundTaskRegistration)(cur.Value);
        }
    }
   
   
    //
    // Register the background task.
    //
   
    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;
}

ServicingComplete 触发器

写ServicingComplete 触发器的方法体的方法上面事件触发器的形式是一致的。这个触发器的作用顾名思义 就是当应用更新完成以后激发。

Windows 8.1 应用开发后台任务简介

除了SystemTrigger 还有 MaintenanceTrigger 维护触发器

使用维护触发器每 15 分钟运行一次任务。维护任务仅在设备插入交流电源时运行,而无需位于锁屏上。这里我还是引用一下 MSDN

创建新的 MaintenanceTrigger 对象。第二个参数 OneShot 指定维护任务是运行一次还是继续定期运行。如果 OneShot 被设置为 true,则第一个参数 (FreshnessTime) 会指定在计划后台任务之前需等待的分钟数。如果 OneShot 被设置为 false,则 FreshnessTime 会指定后台任务的运行频率。

注意如果 FreshnessTime 设置为少于 15 分钟,则在尝试注册后台任务时将引发异常。

int waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);

计时器后台任务 创建方式还是与SystemTrigger十分相似。

创建时间触发器

创建新的 TimeTrigger。第二个参数 OneShot 指定后台任务是运行一次还是保持周期性运行。如果 OneShot 被设置为 true,则第一个参数 (FreshnessTime) 会指定在计划后台任务之前需等待的分钟数。如果 OneShot 被设置为 false,则FreshnessTime 会指定后台任务的运行频率。

Windows 8 具有以 15 分钟间隔运行后台任务的内置计时器。

如果 FreshnessTime 设置为 15 分钟并且 OneShot 为 true,则任务将从其注册之时起 0 至 15 分钟内运行一次该任务。

如果 FreshnessTime 设置为 15 分钟并且 OneShot 为 false,则任务将从其注册之时起 0 至 15 分钟内每隔 15 分钟运行一次该任务。

注意如果 FreshnessTime 设置为少于 15 分钟,则在尝试注册后台任务时将引发异常。

TimeTrigger hourlyTrigger = new TimeTrigger(60, false);
   
SystemCondition userCondition = new SystemCondition(SystemConditionType.UserPresent);
   
BackgroundExecutionManager.RequestAccessAsync();
   
string entryPoint = “Tasks.ExampleBackgroundTaskClass”;
string taskName   = “Example hourly background task”;
   
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读