设为首页 收藏本站
查看: 1136|回复: 0

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

[复制链接]

尚未签到

发表于 2015-5-22 10:55:05 | 显示全部楼层 |阅读模式
  今天要给大家分享的是关于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)
DSC0000.png
  
  然后再试试,Crash现象没有了,BackgroundTask也能正常运行了。我们的努力没有白费啊。希望能够帮助到碰到相关问题的开发者们。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69508-1-1.html 上篇帖子: Windows 8 应用商店应用开发 之 应用程序的数据存储(2)应用程序存储空间 下篇帖子: Windows 8 系列(七):使用异步API:await 和 async
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表