面向对象程序设计(C#)李法平 第8章新.pptVIP

面向对象程序设计(C#)李法平 第8章新.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 1、以每一次课(2节课)为单元。 第8章 多线程编程 */12 目 录 任务8.1 创建多线程程序 任务8.2 创建多线程同步程序 */12 任务8.1 创建多线程程序 2 1 知识目标 能力目标 线程类 掌握多线程程序建立 */12 8.1.1情境描述 为了提高广大顾客的积极性,运动商场时常进行游戏促销活动,猜字游戏就是其中一种。该游戏的规则是通过将单词中的某些字符去掉,给出单词的汉语意思,用户通过键盘输入当前单词,如果输入单词正确,则猜下一个单词,否则提示猜字失败,继续猜字。在猜字的过程中,需要间隔1秒钟提示用户用时,用户猜字总时间为300秒,超过300秒系统将自动关闭游戏。为了实现游戏操作动态时间显示及超过300秒自动关闭游戏,需要完成以下任务: 1)识别显示游戏时间机制及控制机制 2)创建控制时间子线程 第1章目录 猜字游戏的猜字过程及猜字时间显示2个功能,从执行的过程来看,他们之间不存在顺序关系,执行过程基本是同时进行,这就使得当前的程序从只有1条主要的程序流程变成了2条程序流程。 多线程技术是在同一个程序中,开启不同的运行子线程,子线程之间的运行时异步进行的。采取定义子线程技术,能够有效的控制猜字游戏过程的时间显示。 第1章目录 8.1.2问题分析 1)利用Visual studio 2010打开任务8.1案例素材。 注:UI目录下的GassWordMenu实现猜字游戏菜单,BLL目录下的GassWordBLL实现猜字游戏主要逻辑。 2)打开BLL目录下的创建时间控显示类,用于控制猜字的停止及时间显示。名称GassControl。 3) 在新建的类中加入System.Threading的名称空间,用于引入线程类。 4)在GassControl类中添加成员变量,分别显示时间的线程tControlSeconds和用于显示游戏计时变量 5)添加时间显示处理方法,StartControl用于执行子线程委托方法,DisplayTimes执行在指定位置显示时间计数。 6)定义构造函数,启动游戏计数线程 第1章目录 8.1.3解决方案 7)、添加线程中断方法 8)、在GassWordMenu类开始游戏的位置增加时间显示控制,代码如下: 9) 运行程序,界面如下: 第1章目录 8.1.3解决方案 8.1.4知识总结 1、进程和线程的定义 线程是进程中执行运算的最小单位,也是操作系统分配处理器时间的基本单位。如果把进程在逻辑上理解为操作系统所完成的任务,那么线程表示完成该任务的很多可能的子任务之一。 每个进程至少有一个执行顺序或线程,创建一个进程包括在指令中的某一点启动进程。这个最初的线程称为基本线程或主线程.线程的实际执行顺序是由应用程序中的方法代码来决定的。进程不执行任何程序,它是线程的容器,同一进程的所有线程共享该进程的所有资源,线程总是在某个进程的环境中创建,而且它的整个生命期都在该进程中。进程执行任务的时候需要处理器。 第1章目录 */12 8.1.4知识总结 2、线程 C#中线程的有关内容是通过System.Threading命名空间实现的。这个命名空间包含了各种线程操作管理组件和接口,其中最为重要的是Thread类,它提供了创建多线程,设置线程优先级并获取线程运行状态等。 线程启动后执行一个任务,这个任务是通过方法来实现的,所以线程必定跟一个执行方法相关联.应用程序的主线程总是从Main方法开始,而后其他的线程需要在程序里自己定义和启动,所以在创建一个线程的实例的时候需要在Thread的构造方法里面传入一个委托实例,这个委托在线程命名空间中的名字叫做ThreadStart,所以在创建线程之前,必须先创建一个ThreadStart的委托实例,创建方法如下: ThreadStart ts=new ThreadStart(方法名); 第1章目录 */12 8.1.4知识总结 3、线程的生命周期 当创建一个线程的对象的时候,线程会经历几个状态,这些状态分别是未启动状态,运行态,未运行态,死亡状态。由Thread类的一些方法将线程从一个状态转换为另一种状态。 使用Thread的ThreadState属性来获取线程的当前状态。ThreadState属性的取值是由ThreadState枚举中定义的,ThreadState枚举的成员如下。 ThreadState.Unstarted:线程被创建后还没有调用Start()方法 ThreadState.Running:调用了Start()方法后线程已启动 ThreadState.Aborted:线程被终止,处于停止状态 ThreadState.AbortRequested::调用了Abort()方法后还没有停止,但是不久后就会停止 ThreadState.Backg

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档