进程与线程精选文档.ppt
《进程与线程精选文档.ppt》由会员分享,可在线阅读,更多相关《进程与线程精选文档.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、进程与线程进程与线程本讲稿第一页,共五十二页本章重点本章重点本章教学目的本章教学目的 通过对进程、线程基本知识以及通过对进程、线程基本知识以及BackGroundWorkBackGroundWork组件的介绍,组件的介绍,使学生对相关内容有一个感性认识。使学生对相关内容有一个感性认识。本章教学要求本章教学要求(1 1)掌握进程查看、启动、停止的基本方法;)掌握进程查看、启动、停止的基本方法;(2 2)掌握线程创建、启动、终止的基本方法;)掌握线程创建、启动、终止的基本方法;(3 3)掌握开辟多线程的基本方法;)掌握开辟多线程的基本方法;(4 4)掌握在一个线程中引用其他线程中的控件的方法;)掌
2、握在一个线程中引用其他线程中的控件的方法;(5 5)了解其他内容。)了解其他内容。本讲稿第二页,共五十二页2.1 2.1 进程与线程的基本概念进程与线程的基本概念进程进程 正在执行的程序称为进程。正在执行的程序称为进程。与进程相关的信息包括:进程标示(进程与进程相关的信息包括:进程标示(进程IDID)、文件名、执行的程)、文件名、执行的程序和数据,运行时间、在存储器中的位置、占用的内存容量等。序和数据,运行时间、在存储器中的位置、占用的内存容量等。线程线程 将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线程。程。(1 1)
3、线程是)线程是CPUCPU调度和分配的基本单位。调度和分配的基本单位。(2 2)每个进程都有一个主线程。)每个进程都有一个主线程。(3 3)除了主线程以外,还可以给一个进程分配若干个子线程,从而达到多)除了主线程以外,还可以给一个进程分配若干个子线程,从而达到多个任务并行执行的目的。个任务并行执行的目的。本讲稿第三页,共五十二页2.2 2.2 进程管理(进程管理(ProcessProcess类)类)1 1、ProcessProcess类位于类位于System.DiagnosticsSystem.Diagnostics命名空间下。命名空间下。2 2、对本机(也叫本地计算机)、对本机(也叫本地计算
4、机)(1 1)可以启动、终止某个进程)可以启动、终止某个进程 (2 2)可以查看进程相关信息,如)可以查看进程相关信息,如CPUCPU利用率等利用率等 (3 3)可以查看进程工作状态)可以查看进程工作状态3 3、对远程计算机、对远程计算机 (1 1)可以查看远程计算机相关信息)可以查看远程计算机相关信息 (2 2)无法直接启动、终止远程计算机)无法直接启动、终止远程计算机4 4、在一个程序中处理其他的程序(例如调用其他、在一个程序中处理其他的程序(例如调用其他.exe.exe文件、文件、快捷方式等),实际上就是对进程进行管理。快捷方式等),实际上就是对进程进行管理。本讲稿第四页,共五十二页2.
5、2 2.2 进程管理(进程管理(ProcessProcess类)类)ProcessProcess类提供的静态方法类提供的静态方法本讲稿第五页,共五十二页2.2 2.2 进程管理(进程管理(ProcessProcess类)类)5 5、ProcessProcess类常用的属性和方法类常用的属性和方法-获取进程实例获取进程实例-uGetProcessByIdGetProcessById方法(静态方法):通过进程方法(静态方法):通过进程IdId创建新创建新的的ProcessProcess组件,并将其与本地计算机上的进程资源关组件,并将其与本地计算机上的进程资源关联。联。GetProcessById
6、GetProcessById最多只有一个最多只有一个ProcessProcess实例。实例。uGetProcessesGetProcesses方法(静态方法):获取本机所有进程方法(静态方法):获取本机所有进程uGetProcessesByNameGetProcessesByName方法(静态方法):获取本机上方法(静态方法):获取本机上特定名称的进程特定名称的进程-获取及设置优先级获取及设置优先级-uBasePriorityBasePriority属性属性:获取进程优先级(只读)获取进程优先级(只读)uPriorityClassPriorityClass 属性:设置或更改进程优先级属性:设置
7、或更改进程优先级本讲稿第六页,共五十二页2.2 2.2 进程管理(进程管理(ProcessProcess类)类)-进程进程IDID及进程名及进程名-uIdId属性:获取关联进程的属性:获取关联进程的唯一标识符唯一标识符uProcessNameProcessName属性:获取该进程的名称,不包括路径和扩展名属性:获取该进程的名称,不包括路径和扩展名-进程其他信息进程其他信息-uMachineNameMachineName属性:获取关联进程正在其上运行的计算机名称属性:获取关联进程正在其上运行的计算机名称uMainModuleMainModule属性:获取关联进程的主模块属性:获取关联进程的主模块
8、uModulesModules属性:获取由关联进程加载的模块属性:获取由关联进程加载的模块uTotalProcessorTimeTotalProcessorTime属性:获取进程的总的处理器时间属性:获取进程的总的处理器时间uStartTimeStartTime属性:获取关联进程的启动时间属性:获取关联进程的启动时间uWorkingSet64WorkingSet64属性:为进程分配的物理内存量(字节数)属性:为进程分配的物理内存量(字节数)本讲稿第七页,共五十二页1.2 Process1.2 Process类类-进程启动进程启动-uStartStart方法:启动进程资源并将其与方法:启动进程资
9、源并将其与ProcessProcess组件关联组件关联uStartInfoStartInfo属性:获取或设置要传递给启动进程的文件名以及启属性:获取或设置要传递给启动进程的文件名以及启动参数动参数-进程终止进程终止-uKillKill方法:强制终止进程方法:强制终止进程uCloseMainWindowCloseMainWindow方法:关闭具有用户界面的进程方法:关闭具有用户界面的进程uCloseClose方法:释放与此组件关联的所有资源方法:释放与此组件关联的所有资源uHasExitedHasExited属性:指示关联进程是否已终止属性:指示关联进程是否已终止uWaitForExitWait
10、ForExit方法:设置等待关联进程退出的时间,并在方法:设置等待关联进程退出的时间,并在该段时间结束前或该进程退出前,阻止当前线程执行。该段时间结束前或该进程退出前,阻止当前线程执行。本讲稿第八页,共五十二页2.2.1 2.2.1 获获取取进进程信息程信息1 1、如何获取进程信息、如何获取进程信息(1 1)获取本地计算机的所有进程:)获取本地计算机的所有进程:Process myProcesses=Process.GetProcesses();Process myProcesses=Process.GetProcesses();(2 2)获取本地计算机上指定名称的进程:)获取本地计算机上指定
11、名称的进程:Process myProcesses=Process myProcesses=Process.GetProcessesByName(Process.GetProcessesByName(进程名称进程名称););注意:(注意:(a a)进程名称不带扩展名。)进程名称不带扩展名。(b b)可以是任何一个可执行文件)可以是任何一个可执行文件例如:例如:Process myProcesses=Process myProcesses=Process.GetProcessesByName(Process.GetProcessesByName(“WindowApplication1);Wind
12、owApplication1);本讲稿第九页,共五十二页2.2.1 2.2.1 获获取取进进程信息程信息(续)(续)(3 3)获取远程计算机的所有进程:)获取远程计算机的所有进程:Process myProcesses=Process myProcesses=Process.GetProcesses(remoteMachineName);Process.GetProcesses(remoteMachineName);例如:例如:Process myProcesses=Process myProcesses=Process.GetProcesses(192.168.0.1);Process.Ge
13、tProcesses(192.168.0.1);(4 4)获取远程计算机上指定名称的进程:)获取远程计算机上指定名称的进程:Process myProcesses=Process myProcesses=Process.GetProcessesByName(Process.GetProcessesByName(远程进程名称远程进程名称,remoteMachineName);,remoteMachineName);本讲稿第十页,共五十二页程序举例程序举例【例例2-12-1】【例例2-12-1】观察本机运行的所有进程,并显示进程相关的信观察本机运行的所有进程,并显示进程相关的信息。息。要求:要求:
14、(1 1)用)用DataGridViewDataGridView显示所有进程信息显示所有进程信息 (2 2)鼠标单击)鼠标单击DataGridViewDataGridView某处时,判断单击的是否为某处时,判断单击的是否为行开头或者某个单元格,如果是,显示该行进程的详细行开头或者某个单元格,如果是,显示该行进程的详细信息信息 (运行效果见下页图)(运行效果见下页图)本讲稿第十一页,共五十二页1.2.1 1.2.1 获获取取进进程信息程信息(续)(续)运行效果(运行效果(ProcessMonitorProcessMonitor):):本讲稿第十二页,共五十二页2.2.2 2.2.2 启动和停止进
15、程启动和停止进程1.1.启动进程:启动进程:方法方法1 1:(1 1)创建一个)创建一个ProcessProcess组件的实例,例如:组件的实例,例如:Process myProcess=new Process();Process myProcess=new Process();(2 2)设置其对应的)设置其对应的StartInfoStartInfo属性,指定要运行的应用程序名以及传递的参数:属性,指定要运行的应用程序名以及传递的参数:myProcess.StartInfo.FileName=myProcess.StartInfo.FileName=文件名文件名;process1.StartI
16、nfo.Arguments=process1.StartInfo.Arguments=参数参数;如果该进程带有图形用户界面,也可以指定图形用户界面的打开方式。如果该进程带有图形用户界面,也可以指定图形用户界面的打开方式。例如:例如:myProcess.StartInfo.WindowStyle=myProcess.StartInfo.WindowStyle=ProcessWindowStyle.Normal;ProcessWindowStyle.Normal;(3 3)调用该实例的)调用该实例的StartStart方法启动该进程。方法启动该进程。方法方法2 2:直接调用直接调用ProcessP
17、rocess类提供的静态方法启动进程。类提供的静态方法启动进程。本讲稿第十三页,共五十二页2.2.2 2.2.2 启动和停止进程(续)启动和停止进程(续)2.2.停止进程停止进程 通过两种方法利用通过两种方法利用ProcessProcess组件停止进程。组件停止进程。(1 1)如果进程有图形用户界面,调用)如果进程有图形用户界面,调用CloseMainWindowCloseMainWindow方方法。法。(2 2)如果进程没有用户界面,调用进程的)如果进程没有用户界面,调用进程的KillKill方法。方法。不论有没有图形用户界面,如果希望强行让其退出,在权不论有没有图形用户界面,如果希望强行让
18、其退出,在权限允许的情况下,均可以调用限允许的情况下,均可以调用KillKill方法终止该进程。方法终止该进程。本讲稿第十四页,共五十二页程序举例程序举例【例例2-22-2】【例例2-22-2】启动、停止和观察启动、停止和观察NotepadNotepad进程。进程。(StartStopProcessStartStopProcess)要求:)要求:(1 1)用)用ListViewListView显示显示“记事本记事本”进程信息。进程信息。(2 2)用)用ProcessProcess类提供的静态方法启动进程。类提供的静态方法启动进程。(3 3)终止进程时,把所有)终止进程时,把所有“记事本记事本”
19、进程全部终止。进程全部终止。本讲稿第十五页,共五十二页项目中的应用:在程序中执行项目中的应用:在程序中执行sqlsql文件文件说明:说明:osql.exeosql.exe是是SQL ServerSQL Server提供的一个工具,可以利用该工具添加、提供的一个工具,可以利用该工具添加、删除数据库用户,修改用户登录密码,附加、分离数据库等。对于删除数据库用户,修改用户登录密码,附加、分离数据库等。对于通过程序管理数据库很有用。通过程序管理数据库很有用。public void ExecuteSqlFile(string strFileName)public void ExecuteSqlFile(
20、string strFileName)Process SqlProcess=new Process();Process SqlProcess=new Process();SqlProcess.StartInfo.FileName=SqlProcess.StartInfo.FileName=osql.exeosql.exe;SqlProcess.StartInfo.Arguments=SqlProcess.StartInfo.Arguments=-U-U sasa -P-P sa123sa123 -d -d mydbmydb -i-i+strFileName;strFileName;SqlPro
21、cess.StartInfo.WindowStyle=SqlProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;ProcessWindowStyle.Hidden;SqlProcess.Start();SqlProcess.Start();SqlProcess.WaitForExit();SqlProcess.WaitForExit();SqlProcess.Close();SqlProcess.Close();本讲稿第十六页,共五十二页2.3 2.3 线程管理(线程管理(ThreadThread类)类)2.3.1 2.3.1 前台线
22、程与后台线程前台线程与后台线程2.3.2 2.3.2 线程基本操作线程基本操作2.3.3 Volatile2.3.3 Volatile关键字关键字2.3.4 2.3.4 在一个线程中操作另一个线程的控件在一个线程中操作另一个线程的控件本讲稿第十七页,共五十二页2.3 2.3 线程管理(线程管理(ThreadThread类)类)ThreadThread类位于类位于System.ThreadingSystem.Threading命名空间下。命名空间下。ThreadThread类是用于创建和控制线程的类是用于创建和控制线程的,对线程的常用操作有:对线程的常用操作有:启动线程、终止线程、合并线程和让线
23、程休眠等。启动线程、终止线程、合并线程和让线程休眠等。ThreadThread类提供的常用属性类提供的常用属性1.1.IsAliveIsAlive属性属性:获取一个值,该值指示当前线程的执行状:获取一个值,该值指示当前线程的执行状态。如果此线程已启动并且尚未正常终止,则为态。如果此线程已启动并且尚未正常终止,则为truetrue;否则为否则为falsefalse2.2.IsBackgroundIsBackground属性:属性:获取或设置一个值,该值指示某获取或设置一个值,该值指示某个线程是否为后台线程。是后台线程或即将成为后台线个线程是否为后台线程。是后台线程或即将成为后台线程,则为程,则为
24、truetrue;否则为;否则为falsefalse3.3.PriorityPriority属性:属性:获取或设置一个值,该值指示线程的调获取或设置一个值,该值指示线程的调度优先级度优先级本讲稿第十八页,共五十二页2.3 2.3 线程管理(线程管理(ThreadThread类)(续)类)(续)ThreadThread类提供的常用方法类提供的常用方法1.1.StartStart方法方法:启动线程:启动线程2.2.JoinJoin方法:方法:将指定的线程合并到当前线程中,并阻止当前将指定的线程合并到当前线程中,并阻止当前线程执行,直到指定的线程终止或经过了指定的时间为止线程执行,直到指定的线程终止
25、或经过了指定的时间为止3.3.SleepSleep方法:方法:将当前线程阻止指定的毫秒数,零将当前线程阻止指定的毫秒数,零(0)(0)表示应表示应挂起此线程以使其他等待线程能够执行挂起此线程以使其他等待线程能够执行4.4.AbortAbort方法:方法:在调用此方法的线程上引发在调用此方法的线程上引发ThreadAbortExceptionThreadAbortException,以开始终止此线程的过程。调,以开始终止此线程的过程。调用此方法通常会终止线程用此方法通常会终止线程本讲稿第十九页,共五十二页2.3.1 2.3.1 前台线程与后台线程前台线程与后台线程1.1.一个线程要么是后台线程要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 线程 精选 文档
限制150内