文件名称:开发人员必须充-金蝶esb企业服务总线7.0用户手册
文件大小:1.82MB
文件格式:PDF
更新时间:2024-06-23 10:54:03
c# 教程
第七章 多线程程序设计 如果在一个程序中,有多个工作要同时做,可以采用多线程。在 Windows 操作系统中可 以运行多个程序,把一个运行的程序叫做一个进程。一个进程又可以有多个线程,每个线程 轮流占用 CPU的运算时间,Windows 操作系统将时间分为许多个时间片,一个线程使用一个 时间片后,操作系统将此线程挂起,将另一个线程唤醒,使其使用下一个时间片,操作系统 不断的把线程挂起,唤醒,再挂起,再唤醒,如此反复,由于现在 CPU 的速度比较快,给人 的感觉象是多个线程同时执行。Windows 操作系统中有很多这样的例子,例如复制文件时, 一方面在进行磁盘的读写操作,同时一张纸不停的从一个文件夹飘到另一个文件夹,这个飘 的动作实际上是一段动画,两个动作是在不同线程中完成的,也就是说两个动作是同时完成 的。又如 Word 程序中的拼写检查也是在另一个线程中完成的。每个进程最少有一个线程, 叫主线程,是进程自动创建的,每进程可以创建多个线程。 不同语言和操作系统对线程提供了不同支持,编写多线程应用程序的方法也不尽相同。 例如,VB6 没有提供对线程的支持,程序员不能处理自己的线程。VC++6.0开发人员必须充 分理解 Windows线程和处理模型的复杂性,同时拥有这种线程模型的强大功能。C++程序员 可以创建出多线程程序,但必须学习掌握很多复杂的技巧,以确保线程在自己的控制之下。 .NET Framework提供了一个完整而功能强大的线程模型,该模型允许编程人员精确控 制线程中运行的内容,线程何时退出,以及它将访问多少数据等。所以,在.NET 中,既提 供了 C++的强大功能,又具有 VB6 的简单性。 7.17.17.17.1 线程类线程类线程类线程类(Thread)(Thread)(Thread)(Thread)的属性和方法的属性和方法的属性和方法的属性和方法 线程类在命名空间 System..Threading 中定义的,因此如果要创建多线程,必须引入命名 空间 System..Threading。Thread类的常用方法如下: � 属性 ThreadPriority:设置线程优先级,有 5种优先级类别:(AboveNormal)稍高、 (BelowNormal)稍低、Normal(中等,默认值)、Highest(最高)和 Lowest(最低)。 � 构造函数:new Thread(new ThreadStart(线程首先执行的方法名)),构造方法参数中 指定的方法需要程序员自己定义,在这个方法中完成线程要完成的任务,退出该方法, 线程结束。该方法必须为公有 void类型的方法,不能有参数。 � 方法 Start():建立线程类对象后,线程并不能自动运行,用这个方法启动线程。 � 方法 IsAlive():判断线程对象是否存在,=true,存在。 � 方法 Abort():撤销线程对象。不能撤销一个已不存在的线程对象,因此在撤销一 个线程对象前,必须用方法 IsAlive()判断线程对象是否存在。 � 方法 Sleep():参数为毫秒,线程暂时停止参数指定的时间,允许其它线程运行。 � 方法 Suspend():线程挂起。如只是暂时停止线程的运行,可用此函数将线程挂起。 必须用 Resume()方法唤醒线程。 � 方法 Resume():恢复挂起线程。如希望继续运行挂起线程,可用此方法唤醒线程。 需要注意的是,如果线程多次被挂起,调用一次 Resume()方法就可以把线程唤醒。