如何监视后台任务进度和完成 (HTML)

12/11/2015

本文内容

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

介绍应用如何识别后台任务报告的进度和完成。 后台任务从应用中分离开来,并且它们单独运行,但可以通过应用代码监视后台任务进度和完成。若要进行该操作,应用订阅已向系统注册的后台任务事件。

你需要了解的内容

技术

先决条件

本主题假定你拥有一个注册后台任务的应用。若要快速构建后台任务,请阅读快速入门:创建和注册后台任务。有关条件和触发器的详细信息,请参阅使用后台任务支持应用。

说明

步骤 1:

创建一个函数,该函数将连接到事件处理程序以完成后台任务。此函数必须采用一个 BackgroundTaskCompletedEventArgs 对象且不采用任何其他参数。

如果你要在本地注册某个函数,则可以使用以下内存占用:

function OnCompleted(args)

{

// TODO: Add code that deals with background task completion.

}

然后你可以像这样向你的 BackgroundTaskRegistration 对象(该对象是通过使用对注册函数的成功调用来获取的)注册它:

backgroundTaskRegistration.addEventListener("completed", onCompleted);

你将需要添加代码,该代码将处理后台任务完成。

例如,后台任务示例使用 LocalSettings 中保存的完成状态更新 UI:

function OnCompleted(args)

{

//

//

//

backgroundTaskName = this.name;

//

// Call a method to update the UI (beyond the scope of this example).

//

UpdateUI();

}

强大的应用可以通过调用 CheckResult 来检查后台任务引发的异常。

可以对后台任务示例进行如下修改,以处理后台任务引发的异常。

function OnCompleted(task, args)

{

var settings = ApplicationData.Current.LocalSettings;

var key = task.TaskId.ToString();

try

{

args.CheckResult();

BackgroundTaskSample.SampleBackgroundTaskStatus = settings.Values[key].ToString();

}

catch (Exception ex)

{

BackgroundTaskSample.SampleBackgroundTaskStatus = "Error: " + ex.Message;

}

UpdateUI();

}

步骤 2:

对 OnProgress 后台任务事件处理程序方法使用以下足迹:

function OnProgress(task, args)

{

// TODO: Add code that deals with background task progress.

}

向处理后台任务完成的事件处理程序中添加代码。

例如,后台任务示例使用通过 args 参数传递的进度状态更新 UI:

function OnProgress(task, args)

{

var progress = "Progress: " + args.Progress + "%";

BackgroundTaskSample.SampleBackgroundTaskProgress = progress;

UpdateUI();

}

步骤 3:

使用新的和现有的后台任务注册事件处理程序函数。

当应用第一次注册后台任务时,应用应该注册以在任务运行(同时应用仍然在前台处于活动状态)时接收它的进度和完成更新。

例如,后台任务示例在它触发的每个后台任务上调用以下函数:

function AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task)

{

task.Progress += new BackgroundTaskProgressEventHandler(OnProgress);

task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);

}

当应用启动或导航到后台任务状态相关的新页面时,它应用获取档期已注册的后台任务列表并将它们与进度和完成事件处理程序函数关联。应用程序当前已注册的后台任务列表位于 BackgroundTaskRegistration.AllTasks 属性中。

例如,后台任务示例在导航到 SampleBackgroundTask 页面时使用以下代码附加事件处理程序:

function OnNavigatedTo(NavigationEventArgs e)

{

foreach (var task in BackgroundTaskRegistration.AllTasks)

{

if (task.Value.Name == BackgroundTaskSample.SampleBackgroundTaskName)

{

AttachProgressAndCompletedHandlers(task.Value);

BackgroundTaskSample.UpdateBackgroundTaskStatus(BackgroundTaskSample.SampleBackgroundTaskName, true);

}

}

UpdateUI();

}

相关主题

HTML实时显示任务状态,如何监视后台任务进度和完成 (HTML)相关推荐

  1. C++ 实时显示7z压缩与解压缩的进度

    一.7zip下载地址 https://www.7-zip.org/sdk.html 二.nmake编译 下载完后,进入文件夹: 使用VS的命令行工具(nmake)进行编译(命令:nmake /f ma ...

  2. win10任务栏透明_电脑任务栏美化amp;状态监测软件,在任务栏实时显示网速/CPU/内存/温度等信息...

    前言 出于个人喜好和使用习惯,大家电脑的任务栏可能不尽相同. 有的用户喜欢将任务栏设置为透明/磨砂,有的喜欢把图标居中显示,也有的想要在任务栏实时查看电脑的网速.温度.CPU使用率等-- 今天分享这款 ...

  3. 怎么在html显示已登录状态,jQuery Ajax 实现在html页面实时显示用户登录状态

    当网站是全静态的html页面时,而又希望网站会员在登录之后并在所有页面头部显示登录状态,如用户名等,如果未登录就是未登录状态,下面给大家来分享实现的方法. 一.在html静态页面中加入div,并指定I ...

  4. 实时对讲是怎么发起的_QQ可实时显示手机电量并展示给好友 近半投票者支持该功能...

    近日,手机QQ上线新功能,可将在线状态设置为"显示电量",并且,QQ好友可看到电量状态. 就此,隐私护卫队发起投票活动,近半的投票者支持上述功能. ·· 1 ·· 4%的投票者经常 ...

  5. android 串口一直打开_实例 | 使用Python串口实时显示数据并绘图

    今天为大家分享一篇使用Python串口实时显示数据并绘图的例子,具有很好的参考价值,希望对大家有所帮助. 一.安装pyserial以及基本用法 使用pyserial进行串口传输,在cmd下输入命令pi ...

  6. ios pusher使用_如何使用JavaScript和Pusher实时更新用户状态

    ios pusher使用 by Rahat Khanna 通过拉哈特·汉娜 如何使用JavaScript和Pusher实时更新用户状态 (How to update a User's Status i ...

  7. 上传文件实时显示网速怎么实现_担心PC程序吃内存占网速?有了它终于放心了...

    自乔帮主发布iPhone至今,智能手机已经走过了13个年头,其系统.UI.操作逻辑都已经逐步完善且相当傻瓜化. 所以总有许多人切换到PC上时,总感觉缺了那么点东西,Windows系统的生产力自然是毋庸 ...

  8. java 上传 进度,关于 javaweb的文件上传实时显示进度

    方法:使用单例保存实时信息.具体的实现方法就是,当用户点击了处理按钮时,在后台开启一个线程进行处理,并且每进行到一步,就向单例中写入当前状态信息.然后编写一个servlet,用于返回单例中的信息,前台 ...

  9. python串口数据绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:\Anaconda3\Sc ...

最新文章

  1. ASP.NET Web API 过滤器创建、执行过程(二)
  2. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 BasicMessageChannel 通信 )
  3. keytool条目_java keytool 常用命令
  4. 消费者服务消费延时分析
  5. UI素材资源|Material风格的插图,有品位的素材
  6. 没想到!谷歌排名第一的编程语言,这样的学的话,更容易成为高手!
  7. 【转载】为什么要用黑莓?
  8. EM算法的形式化推导
  9. ECharts百度图表
  10. 微服务项目部署-POS收银系统
  11. 手把手教你架构3D引擎高级篇系列一
  12. 新增免费根据商品条码查询商品名称API
  13. MySQL数据库select语句6大子句(from、where、group by、having、order by 、limit )#经典员工、部门表案例语句练手!
  14. Python Level 4 程序题:布置任务
  15. 本题要求实现一个计算非负整数阶乘的简单函数
  16. netlink使用方法
  17. 【云原生之k8s】k8s管理工具kubectl详解
  18. cad lisp 两侧偏移并删除_cad lisp 两侧偏移并删除_知道这些技巧-轻松攻克CAD所有困难...
  19. opencv视频采集
  20. 梦游天姥吟留别课件PPT模板

热门文章

  1. pandas 固定值 增加一列_pandas入门详细教程(附导图)
  2. php创建mysql计划任务_有关创建PHP-MySQL后台任务的建议
  3. sklearn 学习曲线Learning Curve和 validation_curve
  4. 深入理解javascript原型和闭包(8)——简述【执行上下文】上
  5. sapmto生产模式配置及操作详解_MTO生产模式简介
  6. python字符串能减吗_在python中减去两个字符串(Subtract two strings in python)
  7. sqlmap自动扫描注入点_SQLmap JSON 格式的数据注入
  8. python库和模块的区别_Python动态库模块的名称与文件名不同
  9. 强化学习-Vanilla Policy Gradient(VPG)
  10. L 1 ,L 2 参数正则化