- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章Windows编程基础
进程由下列部分组成: l???一个私有的、4GB大小的虚拟地址空间; l???程序相关的代码和数据; l??操作系统分配给进程的系统资源,如文件、单独的消息队列、同步对象等; l???至少包含一个线程,这个线程称为主线程,通过它可以创建或控制其他线程。 进程本身并不直接执行代码,进程内的基本执行单元是线程。一个进程可以包含多个线程,每个线程都可以独立运行,并保持各自的堆栈和寄存器的值。一个线程可以控制另一个线程的执行,一个进程内的各个线程共享该进程的虚拟空间和系统资源。而不同进程之间则互不干扰。 TThread类封装了Windows API和System单元中有关线程运用的函数和例程。与VCL中一般的类不同的是:TThread类是一个抽象类,其所带方法是虚拟抽象的,因而不能直接创建TThread的对象实例,而必须先声明一个由TThread继承来的线程类,再利用这个派生类创建线程对象实例和操纵线程具体类的属性和方法。 1. TThread类的属性 Suspended属性、Terminated属性 、Priority属性 、FreeOnTerminate属性 、ReturnValue属性 。 2. TThread类的方法 Create方法、Execute方法 、Suspend方法、Resume方法 、Terminate方法 、DoTerminate方法 、Synchronize方法 、WaitFor方法 3. TThread类的事件 TThread仅定义了一个OnTerminate事件,当线程对象运行终止时触发该事件。编写该事件代码,可用于通知应用程序的主线程该线程已结束运行。 Delphi为新建各种类型的文件提供了丰富的模板,其中也包括新建由TThread派生出的线程类单元的模板。 每个线程都会赋予一个最低从0到最高为31的优先级编号,操作系统将CPU时间片优先分配给优先级高的线程,高优先级的线程将抢在低优先级线程之前运行。无论低优先级线程的运行正处在其时间片的什么时候,若操作系统发现一个高优先级的线程准备要运行,便立即暂停低优先级线程的运行,而将一个完整的时间片分配给高优先级线程。32位的Windows系统便是采取这种抢先式的线程调度方式。 何时挂起和唤醒线程主要由操作系统负责调度。然而,应用程序可以使用TThread类的Suspend方法挂起线程,暂停其执行,使用Resume方法唤醒线程,恢复其运行。线程可以自己挂起,但不能自己恢复运行,必须由其他线程恢复它的运行。线程的Execute方法代码执行结束时,即意味着线程的终止,线程自动退出。 1. 线程互斥 VCL中提供了3种解决线程互斥的方法。 (1)锁定对象 (2)设置临界段 (3)共享读与独占写 2. 线程同步 一个线程需要等待其他线程的任务结束才能继续,那么可以暂时挂起线程。有下列两种情况: (1)等待其他线程终止 (2)等待一个作业完成 一、Pascal方式的文件访问 二、Windows API方式的文件访问 Delphi中保留了Turbo Pascal传统的文件概念和标准的文件输入和输出子程序(定义于System单元,引用时不必声明)。对文件的访问,一般按照如下步骤进行: (1)声明文件变量的类型。 (2)将文件变量与外部文件关联起来。 (3)打开文件。 (4)读、写文件。 (5)文件定位。 (6)关闭文件。 Delphi的SysUtils单元封装了Windows提供的文件输入/输出的API函数,以及默认参数的常量定义。这些API函数的Pascal语法定义如表7-8所示。与传统的Pascal文件访问方式相比,文件句柄方式在打开文件时提供了更多的可选参数,如设置与网络共享有关的的参数等,文件定位方式也较为灵活。然而,传统的Pascal方式由于可以定义有类型(读写数据元素的类型)的文件,读写数据部分的程序编写较为简洁。 7.1 动态链接库(DLL) 7.2 Windows API及其函数 7.3 消息处理 7.4 多线程编程 7.5 文件访问 一、什么是DLL 二、DLL项目文件 三、创建DLL 四、DLL中的初始化代码 五、调用DLL Windows允许同时运行的多个程序共享一组函数的单一拷贝,于是引入了动态链接方式,将可共享的程序代码以及各种数据资源编译成单独的模块,即动态链接库(DLL)。 在Delphi的IDE中,编写DLL程序与一般的应用程序没有太大的区别,除了在内存、资源管理上有所不同外,区别主要体现在项目文件上。项目文件是一个应用程序项目的主程序。选择执行菜单【Project】→【View Source】项,可以在编辑窗口打开相应的项目文件。 DLL项目
文档评论(0)