网站大量收购独家精品文档,联系QQ:2885784924

C++C#第8讲C#多线程技术知识简介.pptx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++amp;C#第8讲C#多线程技术知识简介.pptx

C++ 和 C# 第8讲 1 主要内容 2 C#多线程技术简介 进程 进程是一个程序与其数据一道通过处理机的执行所发生的活动 进程是指程序实体的运行过程,是系统进行资源分配和调度的独立单位 进程是运行着的程序,是操作系统执行的基本单位 程序 是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。程序是静态的,进程是动态的 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的 3 C#多线程技术简介 线程 是进程中的一个执行单元 是操作系统分配CPU时间的基本单元 Windows是一个支持多线程的系统。一个进程可以包含若干个线程 多线程的优点: 可同时完成多个任务 可使程序的响应速度更快 可让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务 可随时停止任务 可设置每个任务的优先级以优化程序性能 4 C#对多线程的支持 C#中,线程是使用Thread类(或Timer类(线程计数器)、ThreadPool类(线程池))来处理的,这些类在System.Threading命名空间中: using System.Threading; Thread类:(实现线程的主要方法)一个Thread实例管理一个线程,即执行序列。通过简单实例化一个Thread对象,就可以创建一个线程,然后通过Thread对象提供的方法对线程进行管理。 Timer类:适用于间隔性的完成任务。 ThreadPool:适用于多个小的线程。 5 Thread类中线程的状态 由Thread类的ThreadState属性来确定: Abort AbortRequested BackGround Running Stopped StopRequested Suspended SuspendRequsted Unstarted WaitSleepJoin 8 线程举例 在C#应用程序中,第一个线程总是Main()方法,因为第一个线程是由.NET运行库开始执行的。后续的线程由应用程序在内部启动,即应用程序可以创建和启动新的线程。 假定我们需要编写一个视频转码软件,用户点击转换按钮后开始转换指定的文件 整个视频转码过程需要一定的时间才能完成,而用户此时还可能需要移动或缩放程序的窗口,甚至暂停或中止当前文件的视频转码 需要创建一个单独的线程来处理这个视频转码过程使得在转码过程中可以不中断用户界面的响应。因此,我们需要实例化一个Thread对象来创建这个线程: 9 线程的建立与启动 新建一个线程的过程:只需将其声明,并为其提供线程起始点处的方法委托,再用Thread.Start()方法启动该线程 (1)声明: Thread threadName; (2)实例化 threadName =new Thread(new ThreadStart(b)); 其中,b为新建过程中执行的过程名。 (3)调用Thread.Start()方法启动该线程 threadName.Start(); 10 线程的挂起、恢复与终止 启动了一个线程后,线程将运行到所在的方法结束为止,在此期间还可以挂起、恢复或中止它。挂起一个线程就是让它进入睡眠状态,此时,线程仅是停止运行某段时间,不占用任何处理器时间,以后还可以恢复,从被挂起的那个状态重新运行。如果线程被中止,就是停止运行,Windows会永久地删除该线程的所有数据,所以该线程不能重新启动。 暂停线程: Thread.Suspend(); 如果用户以后要求恢复该线程,可以使用下面的方法: Thread.Resume() 如果用户决定不需要继续运行该线程,单击“停止线程”按钮,可以使用下面的方法: Thread.Abort() 11 示例1 线程的建立、启动、挂起、恢复与终止 12 ClassWorkThread WorkThread = new ClassWorkThread(); Thread countNum = new Thread(new ThreadStart(WorkThread.countNum)); MessageBox.Show(启动新线程countNum()!!); countNum.Start(); MessageBox.Show(线程countNum()运行结束); 线程建立、启动 countNum.Suspend(); MessageBox.Show(线程countNum()运行暂停!); countNum.Suspend(); MessageBox.Show(线程countNum()运行暂停!); 线程挂起 countNum.Abort(); countNum = null; MessageBox.Show(线程c

您可能关注的文档

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档