19+编写具有多个线程运行的应用程序

19+编写具有多个线程运行的应用程序

ID:44440150

大小:560.00 KB

页数:40页

时间:2019-10-22

19+编写具有多个线程运行的应用程序_第1页
19+编写具有多个线程运行的应用程序_第2页
19+编写具有多个线程运行的应用程序_第3页
19+编写具有多个线程运行的应用程序_第4页
19+编写具有多个线程运行的应用程序_第5页
资源描述:

《19+编写具有多个线程运行的应用程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第19章编写具有多个线程运行的应用程序对于比较复杂的应用程序来说,同时执行多个任务的能力通常是一个关键性的特性。在此之前,我们看到的应用程序均属于同步应用程序。尽管同步应用程序易于开发,但是它们的性能通常比多线程应用程序低,因为一个新的事务必须等待前面的事务完成后才能开始。如果完成某个同步事务的时间比预想的要长,应用程序可能没有响应。而多线程处理可以同时运行多个过程。例如,字处理程序能够在继续操作文档的同时执行拼写检查事务。.NETFramework提供的线程库能够让开发人员自由创建完全线程化的应用程序,整个程序都可以异步执行,从而允许更

2、高效的设计和更高的交互响应性。本章介绍VB.NET中的多线程技术。章节内容19.1了解线程的基本概念19.2线程创建与管理19.3使用多线程组件轻松创建多线程应用程序19.1了解线程的基本概念19.1.1进程、线程和应用程序域进程应用程序在计算机上是以单独的进程运行的,每一个新启动的应用程序都会创建一个新的进程。一个进程至少包含一个执行线程并有它自己的地址空间,其目的是将应用程序相互隔离,因为进程之间不能直接共享内存。线程线程是操作系统分配处理器时间的基本单位。操作系统将运行时间分配给线程,而不是进程。线程不能单独存在,要求拥有一个所有者

3、进程。而一个进程可以包含至少一个线程,即主进程线程(SubMain),在主进程线程退出时该进程被终止。线程可以与同一进程中的其他线程共享内存线程还有一组关联的资源,包括它自己的异常处理程序、任务计划优先级和操作系统在给其他线程分配运行时间时保留的该线程的上下文信息。应用程序域应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。可以在单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。三者之间的关系19.1.2线程限制任何操作系统对于每个进程上的线程数量均有一个限制。因为每个线程都

4、需要消耗真实的物理资源,保存线程上下文信息需要占用内存。下述情况最适合采用多线程技术开发。时间密集或处理密集的事务妨碍用户界面单独的事务必须等待外部资源,例如远程文件或Internet连接。19.2线程创建与管理19.2.1创建线程使用System.Threading.Thread类下面代码创建了一个新的线程,并在该线程上运行名为myTask的子过程。1DimmyThreadAsNewSystem.Threading.Thread(AddressOfmyTask)2myThread.Start()3'这里的代码马上执行19.2.2线程控制

5、与状态转换方法说明Start线程开始运行Sleep暂停线程一段时间Suspend挂起线程(当线程到达安全点时暂停进程)Abort当线程到达安全点时停止线程Resume重新启动暂停的进程Join引起当前进程等待另一个进程结束。如果设置了超时值,则线程在分配的时间内完成就返回True安全点SafePoint安全点是指代码中公共语言运行库可以安全地执行自动垃圾回收的位置;垃圾回收是指释放不再使用的变量并回收内存的过程。调用线程的Abort或Suspend方法时,公共语言运行库将对代码进行分析,确定让线程停止运行的适当位置。线程状态线程从创建到终

6、止,一定处于某种状态中。线程状态是由System.Threading.Thread.ThreadState属性来定义的。通过执行Thread类提供的用于控制单个线程的方法,线程的状态也会随之改变。19.3使用多线程组件轻松创建多线程应用程序BackGroundWorkTimer组件19.3.1BackGroundWorker组件许多常执行的操作可能需要比较长的操作时间,这样的操作可能会导致用户界面在运行时挂起,要等待操作完成后才可以进行其他操作。长时间的等待延迟对用户来说是不可忍受的。BackGroundWorker组件为该类问题提供了一

7、个解决方案,即将耗时操作在不同于应用程序的主用户界面线程的另一线程上异步执行,也就是所谓的在后台执行。常用属性属性说明WorkerReportsProgress辅助线程是否支持报告进度。该属性为True,则BackGroundWorker组件的ProgressChangedWorkerSupportsCacellation辅助线程是否支持取消常用方法方法说明RunWorkerAsync开始异步执行。该方法触发DoWork事件ReportProgress报告进度,参数是一个整型,表示进度信息。该方法触发ProgressChanged事件Ca

8、ncelAsync停止并退出异步执行的线程常用事件事件说明DoWork调用RunWorkerAsync时发生该事件RunWorkerCompleted当后台操作已完成、被取消或引发异常时发生该

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。