今天要给大家分享的是关于BackgroundTask。在此之前,我们先看看这个问题:VS2011 无法捕获的Crash(崩溃)。

在我们某个版本发布了Alpha之后,测试人员就反馈说我们的应用不像前一个版本那么稳定了,总是会自动关闭,或者重新启动,而且操作步骤没有规律,浮现概率低。

我的第一反应是:系统的问题。因为在自测的过程中也有碰到类似问题,比如:在Debug某个功能的时候(通常需要运行大概5分钟或者更长时间),应用程序就会自动关闭,并且vs自动解除Debug状态。这让我很纳闷,如果有异常,应该在Debug状态下抛出给开发者,怎么会无故关闭Debug状态呢??

直到我们临近官方提交应用的截止日期,这个问题被无限放大,成为我们当时最难以解决又不得不解决的问题。没有log、没有异常抛出,我们当时只能尝试着每一条通往答案的路。

后来我们发现,当我们只是启动了程序,什么都不做的情况下,依然会Crash,Crash的时间都不定,大概在5-15分钟。我回想了下,当时只有全局的Timer在运行,但是当我们把Timer去掉后,Crash的情况依然存在。

于是我们想到了Background,难道程序在运行的时候,Background也在执行??官方文档中描述了

If a background task executes within the app process, the background task infrastructure might need to change the state of the app:

· Running: If the app is running, it is already in the foreground and the background task is simply launched within the app.

· Suspended: If the app is suspended, most of its threads are unfrozen and the background task is launched. For details, see “Threading model for background tasks hosted in the app,” later in this paper.

· Terminated: If the app is terminated, it is not running at the time of the trigger so the app is launched and the background task is run. The app activation does not involve UI, and it does not bring the app to the foreground.

也就是说,在程序运行的时候,BackgroundTask也在运行。但是我们的代码是根据官方提供的Sample中的代码写的,设置也一样,应该不会错啊。经过我们的测试,官方提供的Sample也会出现Crash的情况。。。原因是,我们的开发环境曾经升级了一个内部版本,代码有些变动,但是官方文档中并没有提及相关的变动和相关的方法,这在一定程度上影响了我们的正常开发进度。(但是在此还是要感谢一下微软中国对我们的支持,帮我们向总部反应情况)

如下图,由于我们的BackgroundTask是时间触发的,每15分钟触发一次,因此我们在配置文件的Declarations选项卡中添加BackgroundTasks,然后再右侧的设置中只勾选Timer,切Executable项的内容需要为空(官方Sample中勾选了多个,并且Executable项中的内容为:backgroundTaskHost.exe)

然后再试试,Crash现象没有了,BackgroundTask也能正常运行了。我们的努力没有白费啊。希望能够帮助到碰到相关问题的开发者们。

转载于:https://www.cnblogs.com/lihaiyin/archive/2012/05/28/2521115.html

Windows 8 系列(六):BackgroundTask 及其引起无法捕获的Crash相关推荐

  1. 实用 Windows 软件系列分享(六)

    苏生不惑第303篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过Windows软件系列文章: 新买了台笔记本电脑,分享些实用的Windows软件 实用 Windows 软件系列分享(二 ...

  2. 2013年最值得我们学习的网页作品示例【系列六】

    这是本系列的最后一篇文章了,和大家一起学习2013年里最优秀的网页设计作品.在过去的一年,网页设计领域出现了几个新的流行趋势,最热门的要数响应式设计(Responsive Design)和扁平化设计( ...

  3. ONNX系列六 --- 在Java中使用可移植的ONNX AI模型

    目录 安装和导入ONNX运行时 载入ONNX模型 使用ONNX运行时进行预测 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携式神经网络 ...

  4. 实用 Windows 软件系列分享(七)

    苏生不惑第324篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过Windows系列软件,这里继续分享第7篇,在公众号后台对话框回复 Windows 获取以下软件: 新买了台笔记本电脑, ...

  5. 进入BeOS的花花世界 系列六

    进入BeOS的花花世界 系列六      下载BeOS 心动不如马上行动            ⊙记者张子强/专题报导             检查完电脑硬体的需求,您已经准备好要进入BeOS的世界了 ...

  6. deepinV20一路艰辛系列六:更新微信到最新版本

    deepinV20一路艰辛系列六:更新微信到最新版本 关闭deepin微信进程 从Windows下的WeChat目录(一定记得先升级到最新版) 替换deepin的WeChat目录 重新打开微信就会发现 ...

  7. 玩转Windows服务系列——Windows服务小技巧

    伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...

  8. Silverlight Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效...

    原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化.波感特效 当我们在进行Silverlight & Bl ...

  9. xen虚拟化实战系列(六)之xen虚拟机破解密码

    xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装 xen虚拟化实战系列(二)之xen虚拟机安装 xen虚拟化实战系列(三)之xen虚拟机复制 xen虚拟化实战系列(四)之 ...

最新文章

  1. Android 进程常驻(0)----MarsDaemon使用说明
  2. pytorch载入预训练模型后,训练指定层
  3. 通讯故障_伦茨lenze全数字直流调速器通讯故障维修经验很丰富
  4. maxvalue mysql自动分区_创建mysql表分区的方法
  5. drupal7的目录结构及术语
  6. 基于Linux的USB主/从设备之间的三种通信方式-转
  7. MVC 添加Area
  8. AspUpload实时上传进度的AJAX方法
  9. 出现问题请与你的系统管理员联系 照片出现问题请与你的系统管理员 照片出现问题请与系统管理员联系 无法打开应用请与管理员联系
  10. 树莓派CM4_5G扩展板搭载展锐国货5G在Kali系统下免驱即插即用演示
  11. dsoframer-在线编辑office文档,一款开源的由微软提供
  12. 阿里云 CDN 业务基于边缘容器的云原生转型实践
  13. mongodb面试题目,2022腾讯Java面试题精选
  14. 华为提出“品质宽带”价值主张 共建宽带产业新生态
  15. VBA基础知识整理(数据类型)
  16. 游戏用简单像素画素材的绘制
  17. win10 浏览器不能上网但是QQ等其他软件都能上网
  18. java jstack 分析工具_JVM分析工具——jstack实践
  19. windows系统中清除cmd命令行的命令
  20. oracle中in函数在子查询使用,Oracle In

热门文章

  1. php 仓库管理实例,php+mysql超市仓库管理系统
  2. 在python中函数和类都属于可调用对象_在Python中函数和类都属于可调用对象
  3. 怎么将layui导入php中,layui怎么导入Excel
  4. flutter 监听返回
  5. tensorflow的基础
  6. BZOJ3196 二逼平衡树 ZKW线段树套vector(滑稽)
  7. javascript base64加密解密
  8. VS2015新建项目无法选择framework 4.6.2
  9. 如何实现响应式布局?
  10. svn更换url地址怎么办