《CWinForm实践开发教程》多线程编程技术.ppt
《《CWinForm实践开发教程》多线程编程技术.ppt》由会员分享,可在线阅读,更多相关《《CWinForm实践开发教程》多线程编程技术.ppt(33页珍藏版)》请在三一办公上搜索。
1、-基于C#语言,主讲教师:钱 哨本课学时:72课时联系方式:,Windows程序设计,第五章、多线程编程技术,本章主要内容介绍5.1 计算机线程介绍5.2 System.Threading简介5.3 线程的优先级与锁技术,CONTENT,本章学习目标:,理解线程的概念理解.NET中线程的属性和方法创建和使用线程理解线程的特点、优点及使用场合,同时执行所有任务,时间更少,效率更高,5.1 线程简介,读,写,一览无遗,血液循环,在同一时间点执行各项进程,编译程序 发送/接收邮件 打印文件 其他,操作系统允许计算机同时执行多项操作,程序(进程),5.1 线程简介,程序 1,程序 2,线程 1,线程
2、2,线程 3,线程 1,线程 2,线程 3,单独的执行路径,多线程,5.1 线程简介,进程:是应用程序的一个运行例程,是应用程序的一次动态执行过程。线程:是进程中的一个执行单元;是操作系统分配CPU时间的基本单元。Windows是一个支持多线程的系统。一个进程可以包含若干个线程。,5.1 线程简介,在以下情况中可能要使用到多线程:,程序需要同时执行两个或多个任务,程序要等待某事件的发生,例如用户输入、文件操作、网络操作、搜索等,后台程序,5.1 线程简介,多线程:在同一时间执行多个任务的功能,称为多线程或自由线程。多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以让占用大量处理
3、时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。多线程的缺点:对资源的共享访问可能造成冲突(对共享资源的访问进行同步或控制);程序的整体运行速度减慢等等。,在C#应用程序中,第一个线程总是Main()方法,因为第一个线程是由.NET运行库开始执行的,Main()方法是.NET运行库选择的第一个方法。后续的线程由应用程序在内部启动,即应用程序可以创建和启动新的线程。,5.2 System.Threading 命名空间,5.2 System.Threading 命名空间,在.NET程序设计中,线程是使用Thread类(或Tim
4、er类(线程计数器)、ThreadPool类(线程池)来处理的,这些类在System.Threading命名空间中:using System.Threading;Thread类:(实现线程的主要方法)一个Thread实例管理一个线程,即执行序列。通过简单实例化一个Thread对象,就可以创建一个线程,然后通过Thread对象提供的方法对线程进行管理。Timer类:适用于间隔性的完成任务。ThreadPool类:适用于多个小的线程。,1、Thread 类的属性和方法,引用System.Threading 命名空间,Thread 线程实例名=new Thread(new ThreadStart(方
5、法名);,运行在线程上的方法,只创建但不启动线程,线程实例名.Start();,1、Thread 类的属性和方法,2、线程的生命周期,在 I/O 操作期间线程被阻止,线程已创建但并未启动,线程已启动,I/O 操作完成后运行,线程被阻止,另一个操作正在进行,提前中断或特地停止线程,暂时中断的线程,线程已恢复,等待,/,休眠,/,加入,已暂停,正在运行,已停止,未开始,已开始,已阻止,暂停,发送,I,/,O,请求,等待,,,休眠,,,加入,开始,I,/,O,完成,完成,恢复,5.3 线程的建立与启动,新建一个线程的过程:只需将其声明并为其提供线程起始点处的方法委托,再用Thread.Start()
6、方法启动该线程(1)声明:Thread a;(2)实例化a=new Thread(new ThreadStart(b);其中,b为新建过程中执行的过程名。(3)调用Thread.Start()方法启动该线程a.Start();,5.3 线程的建立与启动,using System;using System.Threading;public class A public void ff()/线程启动时调用此方法Console.WriteLine(A.ff()方法在另一个线程上运行!);Thread.Sleep(3000);/将线程阻塞一定时间Console.WriteLine(终止工作线程调用此实
7、例方法!);public static void gg()Console.WriteLine(A.gg()方法在另一个线程上运行!);Thread.Sleep(5000);/将线程阻塞一定时间Console.WriteLine(终止工作线程调用此静态方法!);,例题1:线程的建立和启动,5.3 线程的建立与启动,public class Bpublic static void Main()Console.WriteLine(*线程简单示例!*);A a=new A();Thread s1=new Thread(new ThreadStart(a.ff);s1.Start();Console.W
8、riteLine(启动新线程ff()方法后,被Main()线程调用!);Thread s2=new Thread(new ThreadStart(A.gg);s2.Start();Console.WriteLine(启动新线程gg()方法后,被Main()线程调用!);Console.ReadLine();,例题1:线程的建立和启动,5.3 线程的建立与启动,线程的挂起(或暂停)(1)调用Thread.Sleep()方法将线程挂起。注:Sleep()方法指定的时间以毫秒为单位。(2)调用s1.Suspend()方法将线程挂起区别:前者为静态方法,并且使线程立即暂停一定时间;后者为实例方法,不会
9、使线程立即停止执行,直到线程到达安全点之后,它才将该线程暂停。线程的恢复与终止调用Resume()方法将线程恢复;调用Abort()方法将线程终止;,线程的挂起、恢复与终止,其他与操作线程相关的方法,Join():使一个线程等待另一个线程停止Interrupt():中断处于JoinWaitSleep线程状态的线程。,5.4 线程的优先级,class SimpleThreadDemo static void Main(string args)=“主线程;Thread objThread=new Thread(new ThreadStart(ActionMethod);objThread.Name
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CWinForm实践开发教程 CWinForm 实践 开发 教程 多线程 编程 技术
链接地址:https://www.31ppt.com/p-6360927.html