- 浏览: 84328 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
动手实验
实验5:进程生命周期管理
2012年9月
简介
进程生命周期管理对构建Windows应用商店应用的开发者来说是需要理解的最重要的概念之一。不同于传统的Windows应用(它们即使在后台任然继续执行),Windows应用商店应用仅在前台时执行。通常不可见的应用程序被操作系统挂起并且不能被执行直到操作系统将它恢复到前台。
当应用程序被挂起,它任然在内存中,同时它的所有线程被挂起。只要进程任然在内存中,当应用程序回到前台时,它将从停止的地方继续执行。要做到这一点开发者不需要做任何工作。然而您不能被保证进程一直在内存中。如果当应用程序被挂起时,Windows内核决定需要挂起应用程序所使用的内存,Windows可以终止挂起的应用程序。当应用程序被终止时,所有未保存的状态将被丢失。除非您采取步骤以保持状态,否则当用户返回应用程序并发现所有已完成的工作被丢失时将会非常吃惊。
显然我们不会允许它发生。当应用程序被挂起时,即使Windows也不知道应用程序是否最终将被终止。您应当假定应用程序将被终止,因此您必须编写代码以在它被挂起时保存应用程序的状态。然后如果您检测到应用程序被挂起时有一个终止发生,您可以在重新激活时恢复状态。
听起来很麻烦?有时是,但是对大多数应用程序来说不是,并且这是您编写优秀应用程序必须做的工作。不做上述工作的潜在代价是仅仅切换到另一个应用程序就会丢失他或她在您应用程序中所做的所有工作。
目标
本实验将向您介绍进程生命周期管理并向您展示Visual Studio在缺省模版中为您编写的一些代码。因为Contoso食谱是一个简单的应用程序,所以我们不需要编写新的代码来处理进程生命周期管理,Visual Studio注入的代码已经足够。您可能必须为自己的应用程序编写更多的代码,因此我们将告诉您代码的位置以及您可以使用哪些应用程序接口(API)。停止打字并坐下来休息一下,但是请务必集中注意力。
系统要求
您需要下列软件完成本实验:
- Microsoft
Windows 8 - Microsoft
Visual Studio 2012
设置
您必须执行以下步骤来准备本实验的计算机:
- 安装Microsoft Windows 8。
- 安装Microsoft Visual Studio 2012。
练习
本动手实验包含以下练习:
- 导航状态已经被保存
- 提示
练习1:导航状态已经被保存
因为在Contoso食谱中唯一需要保存的状态是导航状态(即用户查看的项或组以及导航历史),您不需要为处理进程生命周期管理做任何工作。Visual Studio在您的应用程序中包含一个名称为SuspensionManager的类,它位于项目Common文件夹的SuspensionManager.cs中。Visual Studio同时在App.xaml.cs中的App构造函数中包含一行代码,它为Suspending事件注册了一个事件处理程序。如此处所示,处理程序OnSuspending调用SuspensionManager.SaveAsync以保存应用程序的导航状态。
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
Visual Studio在App.xaml.cs文件的OnLaunched事件中包含一个if子句,它的作用是如果应用程序在被挂起后被操作系统终止,则恢复应用程序的导航状态。
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
// Restore the saved session state only when appropriate
await SuspensionManager.RestoreAsync();
}
所有这些工作的结果是您可以免费获得很多东西。如果Contoso食谱被挂起并终止,当再次被启动时,它将自动转至您最后查看的页面。您可以通过按F5从Visual Studio运行应用程序,选择某个食谱并从此处所示的Debug Location(调试位置)工具栏选择Suspend and shutdown(挂起并关闭)以对其进行测试。
在以这种方式关闭应用程序后按F5以重新启动应用程序。以上操作对由操作系统终止并重新启动应用程序的过程进行了模拟。得益于Visual Studio创建的代码,应用程序将返回您关闭应用程序时查看的食谱。因为导航历史也被恢复,您甚至可以使用返回按钮回溯您在应用中的步骤。
练习2:提示
我们强烈建议您熟悉Visual Studio中的Suspend(挂起), Resume(继续), 和Suspend and shutdown(挂起并关闭)命令。这是调试应用程序进程生命周期管理状态的很好的方法。如果您仅仅通过启动应用程序并切换任务以使应用程序进入或退出前台的方法调试进程生命周期管理,大多数时候都能得到预想的结果。但是对于终止您将不能看到正确的行为。您将看到应用程序停留在内存的时间比预想的要长,因为Visual Studio调试器进行了一些处理以保持与应用程序的连接。对终止事件请使用Visual Studio中的Suspend and shutdown 命令。
决定进程生命周期管理需要保存的内容同样十分重要。在下一个实验中我们将讨论设置(或称为用户首选项)并且您将注意到当用户输入或修改设置时我们将立刻保存它们。为进程生命周期管理保存的状态应该是一个帮助您恢复用户至应用程序挂起前位置的“瞬时”状态。其他任何需要保存的内容(例如设置或缓存)应该根据需要越早保存越好。这种做法将减少在进程生命周期管理的挂起事件中您需要完成的工作量。
总结
对于优秀的Windows应用商店应用,为进程生命周期管理处理Suspend和Resume事件是必须的。在Contoso食谱实验中我们不需要为此做很多工作,因为我们需要保存的所有内容就是导航历史。在您的应用程序中,可能需要做一些额外的工作。本实验向您介绍了Visual Studio生成的代码以及进程生命周期的基础设施。对于Contoso食谱还有很多工作需要完成。下一个实验将向您展示如何使用设置超级按钮保存用户首选项。让我们继续前行。
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1073原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1134原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 624原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 475原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 597原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 560原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 560原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 526原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 497原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 801原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 788原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 624原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 568原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 612原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 840原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 956原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 413原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 676原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 671原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 504原帖地址:http://www.cnblogs.com/had ...
相关推荐
Amazon S3:S3生命周期管理教程.docx
教程涵盖了Windows内核的基础概念、架构、进程管理、线程管理、内存管理、设备驱动程序开发等多个重要主题。 1. **Windows内核基础**:Windows内核是操作系统的核心部分,负责调度系统资源,如CPU时间、内存等,以...
参考文献包括《计算机操作系统》、《操作系统实验教程》和《操作系统原理与实践》,这些书籍提供了操作系统理论的基础,有助于学生深入理解进程管理的各个方面。 在实验的进度安排中,从分析题目到编码、测试,再到...
《Windows内核实验教程》是一本深入探讨操作系统内核机制的教材,特别关注了在Windows环境中如何进行实际操作和设计代码。"读者写者问题"是计算机科学中经典的多线程同步问题,这本书中可能涉及了如何在Windows内核...
《UNIX Linux实验教程 6实验六Windows2000多进程和多线程机制》 在计算机操作系统领域,多进程和多线程是提高系统效率和并发性的重要机制。本实验主要关注在Windows 2000环境下如何设计和管理这些机制。Windows ...
操作系统中的内存管理是确保...总的来说,这个实验报告提供了一个动手实践的机会,加深了对操作系统内存管理特别是请求分页机制的理解,这对于任何想要深入研究操作系统或从事相关开发工作的人来说都是极其有价值的。
阿里云弹性计算服务(ECS):ECS实例生命周期管理教程.docx
本书《操作系统实验教程》由袁宝华主编,旨在通过实践教学帮助学生理解操作系统的核心原理和概念,并提升学生编写和开发系统程序的能力。整本书分为三个部分,首先是基于Windows环境的实验,接着是基于Linux环境的...
本教程通过一系列实验,帮助读者深入理解Windows内核的工作原理。 在学习Windows内核时,首先需要了解的是内核的基本概念,包括进程、线程管理,内存管理,以及设备驱动程序等核心组件。这些内容构成了操作系统的...
在这个课程设计中,学生被要求模拟实现一个进程管理器,这有助于深入理解操作系统如何管理和控制进程的生命周期,以及它们如何共享和竞争系统资源。 首先,我们要了解进程的基本概念。进程是程序在计算机中的一个...
实验一: 熟悉常用的Linux操作和Hadoop操作 实验二: 熟悉常用的HDFS操作 实验三: 熟悉常用的HBase操作 实验四: 熟悉常用的mongoDB数据库操作 实验五: MapReduce初级编程实践 实验六: 熟悉Hive的基本操作 实验七...
Windows CE动手实验(基础篇).PDF
5. **实验实践**:通过一系列实验,读者可以亲自动手操作,了解如何在模拟器或真实硬件上安装、调试Windows CE 4.2系统,以及如何运行和测试应用程序。 6. **UnicornViewer PDG浏览器**:这个工具用于查看和阅读PDG...
Windows与Linux下操作系统相关实验 主要实验内容包括: 1. 文件复制 2. Linux内核编译 3....运行环境:Windows+Linux 安装教程 在特定系统下运行代码即可 详细的代码设计文档参考各个项目下的doc文档文件。
MASM for Windows 集成实验环境V2015是专门为Windows 7 64位系统设计的一个专业级汇编开发工具。这个版本是2015年的最新更新,且已汉化为中文,方便中国用户使用。据描述,该版本在64位环境下运行稳定,未发现明显的...
2. **JSP生命周期**:JSP页面在服务器端经历解析、编译、加载和执行四个阶段。在第一次请求时,JSP会被转换成一个Servlet类,并在后续请求中重用。 3. **脚本元素**:Scriptlets(`<%...%>`)用于编写Java代码块,...
5. **实验内容**:TEC-8实验可能涵盖以下主题:指令系统的设计与实现,CPU的时序分析,寄存器操作,内存访问,中断系统,以及简单的I/O设备控制。通过这些实验,学生可以学习如何设计和分析简单的计算机系统。 6. *...
通过这个实验教程,你不仅可以理论联系实际,增强动手能力,还能提升对网络安全的理解,为未来的工作或认证考试打下坚实基础。记得在实践中不断探索和积累经验,网络安全的学习是一个持续进步的过程。