20122013第七章ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二,进程是一个“执行中的程序”。程序是一个没有 生命的实体,只有处理器赋予程序生命时,它才能成为 一个活动的实体,我们称其为进程。
5
第 七
7.1.2 线程基本概念
章 多
线程(thread),有时被称为轻量级进程 (Lightweight Process,LWP),是程序执行流
线
的最小单元。

一个标准的线程由线程ID,当前指令指针(PC),寄存
第 七 章
7.2.3 获取进程信息 System.D1ia.gn进os程tic获s.P取rocess.GetProc
多 线 程
esses()方法可以获取一个进程,常用的获取 进程的方法有4种:

(1)获得当前计算机系统内所有的已启动的进

程:

Process[] processOnComputer= Process.GetProcesses();
指定由这个进程打开的当前句柄总数。这个数目是在 这个进程中每个线程当前打开的句柄的总数。句并用 于检查或修改系统资源。每个句柄在内部维护的表中 有一项。这些项包括资源地址和识别资源种类的方法 。
表示安装对象的日期时间值。没有值并不表示该对象 没有安装。
核心模式下的时间,单位是 100 纳秒。如果该信息不 可用,应使用 0 取值。
ቤተ መጻሕፍቲ ባይዱ
ExecutionState
表示当前进程的操作条件。值包含就绪(2)、运行(3)和 受阻(4)及其它。
10


属性
章 Handle

线
程 HandleCount


技 术
InstallDate
KernelModeTime
Process类常用属性
说明
用于指示进程的字符串。进程 ID 是一种进程句柄。

{
发 技
public static void Main() {
Process ie = new Process();

//指定启动程序的名称
ie.StartInfo.FileName = "iexplore.exe";
ie.StartInfo.Arguments = "";

器集合和堆栈组成。

线程是进程中的一个实体,是被系统独立调度和分派
技 术
的基本单位,线程自己不拥有系统资源,只拥有一点 在运行中必不可少的资源,但它可与同属一个进程的 其它线程共享进程所拥有的全部资源。
一个线程可以创建和撤消另一个线程,同一进程中的 多个线程之间可以并发执行。
由于线程之间的相互制约,致使线程在运行中呈现出 间断性。线程也有就绪、阻塞和运行三种基本状态。

七 章
方法

线
程 开
Create



Terminate
rocess类常用方法
说明
创建一个新的进程。该方法返回一个整数,其意义分别如下: 0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整数值,请参阅 Win32 错误代码文档 。
MaximumWorking SetSize
表示进程的最大工作集大小。进程的工作集大小是在 物理 RAM 中当前可见的内存页面集。这些页面为常 驻性并且再不触发页面错误的情况下就可供应用程序 使用。例如: 1413120
表示进程的最小工作集大小。进程的工作集大小是在
MinimumWorkingS 物理 RAM 中当前可见的内存页面集。这些页面为常

技 术
也可以用ProcessStartInfo类对象,并通过构造函 数指定属性和参数,然后传递给进程对象的 StartInfo属性。格式如下:
Process myProcess = new Process(); ProcessStartInfo ps = new ProcessStartInfo(文件名); ie.StartInfo = ps;
会终止一个进程和它所有的线程。该方法返回一个整数,其意义 分别如下: 0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整数值,请参阅 Win32 错误代码文档 。
3
第 七
7.1 进程线程基本概述

多 线
7.1.1 进程基本概念
程 开
7.1.2 线程基本概念



4
第 七
7.1.1 进程基本概念

多 线
进程的概念主要有两点:
程 开 发 技 术
第一,进程是一个实体。每一个进程都有它自己的地址 空间,一般情况下,包括文本区域(text region)、 数据区域(data region)和堆栈(stack region)。 文本区域存储处理器执行的代码;数据区域存储变量和 进程执行期间使用的动态分配的内存;堆栈区域存储着 活动过程调用的指令和本地变量。
第 七
7.2.2 进程创建与关闭

多 线 程 开
启动与停止指定的进程之前,需要创建一个进程实例, 并设置相应的进程的StartInfo属性,以指定欲运行 的应用程序名称及相应的参数

然后调用Start方法启动该进程

调用CloseMainWindow或Kill方法停止该进程。

Kill立即关闭进程

CPU。

通常在一个进程中可以包含若干个线程,它们可以利

用进程所拥有的资源。在引入线程的操作系统中,通

常都是把进程作为分配资源的基本单位,而把线程作 为独立运行和独立调度的基本单位。
由于线程比进程更小,基本上不拥有系统资源,故对 它的调度所付出的开销就会小得多,能更高效的提高 系统内多个程序间并发执行的程度。因而近年来推出 的通用操作系统都引入了线程,以便进一步提高系统 的并发性,并把它视为现代操作系统的一个重要指标。
17
第 七 章
using System; using System.Collections.Generic; using System.Linq; using System.Text;
实例

using System.Diagnostics;
线 程
namespace _6_2 {
class Program
技 CreationDate
进程开始执行的时间。
术 CSCreationClassNa 包含作用域计算机系统的创建类别名称。
me
CSName
作用域计算机系统的名称。
Description
提供对象的简短文字描述
ExecutablePath
表示进程的可执行文件的路径,如 C:\WINDOWS\EXPLORER.EXE
waitforExit 在等待关联进程的退出
Close 释放与此关联的所有进程。
16

创建进程
七 章
格式如下:

线
Process myProcess = new Process();

myProcess.StartInfo.FileName = "启动的文件名";

myProcess.StartInfo.Arguments = "参数";
C#.NET程序设计实用教程
第七章
多线程开发技术

学习目标


多 线
掌握进程和线程概念;
程 掌握进程的创建与信息获取方法;
开 发
掌握线程创建、同步、通信等基本操作。


2
第 七
第七章 多线程开发技术

多 线
7.1 进程线程基本概述
程 开
7.2 进程开发技术
发 技
7.3 线程开发开发技术
术 7.4 多线程案例分析
return
7
第 七
7.2 进程开发技术

多 线
7.2.1 进程管理
程 开
7.2.2 进程创建与关闭
发 技
7.2.3 获取进程信息

8
第 七
7.2.1 进程管理

多 线
一个应用程序执行时调用其他的应用程序,实 际上就是对进程管理
程 开 发
在System.Diagno stics命名空间下,有一 个Process类用于完成于进程相关的处理任务。
为该进程装入当前已注册的调试器。但并不支持 Dr. Watson。该方法 返回一个“通用故障”(如果注册表中有一个无效字符串)或者一个整 数,其意义分别如下: 0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整15数值,请参阅 Win32 错误代码文档。
线程是程序中一个单一的顺序控制流程。在单个程序 中同时运行多个线程完成不同的工作,称为多线程。
6



线程和进程的区别在于,子进程和父进程有不同的代
多 线 程
码和数据空间,而多个线程则共享数据空间,每个线程 有自己的执行堆栈和程序计数器为其执行上下文。多 线程主要是为了节约CPU时间,发挥利用,根据具体情 况而定. 线程的运行中需要使用计算机的内存资源和
发技 OtherOperationCount 指定的读取和写入操作之外进行的 I/O 操作的数。
术 OtherTransferCount 指定在读取和写入操作之外的其它操作中的数据传送量。
PageFaults PageFileUsage
表示由进程产生的页错误数目。 表示由进程当前使用的页面文件空白的数目。例如: 102435
if(ie.Start())
Console.WriteLine("网站已经顺利创建并启动");
//强制关闭刚刚启动的程序
ie.Kill();
Console.WriteLine("刚刚创建的网站关闭");
Console.ReadLine();
}
}
}
18
13

七 章
方法
多 线 程 开 GetOwner 发 技 术
rocess类常用方法
说明
提取用户名和域名,在其名下进程正在运行。该方法返回一个整 数,其意义分别如下: 0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整数值,请参阅 Win32 错误代码文档 。
ParentProcessId
指定创建这个进程的那个进程的唯一标识符。进程标识符可
以重新使用,所以这些标识符值在进程寿命器之内识别进程 。由 ParentProcessId 识别的进程可能已经终断,因此 ParentProcessId 不能表示一个正在运行的进程。 ParentProcessId 还可能错误地识别重新使用那个进程识别 符的进程。CreationDate 属性可以用来识别指定的父进程是 否在这个进程之1后2 创建的。
14
第 七方法 章 多 线 程 SetPrio 开 rity 发 技 术
Attach Debugg er
rocess类常用方法 说明
试图更改该进程的执行优先级。为了把优先级设置成 Realtime,调用 程序必须拥有 SeIncreaseBasePriorityPrivilege。 若没有该特权,该优 先级最高可设置为 High 优先级。 该方法返回一个整数,其意义分别如下: 0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整数值,请参阅 Win32 错误代码文档。
etSize
驻性并且再不触11 发页面错误的情况下就可供应用程序

Process类常用属性


属性
说明
多 Name
线 程
OSCreationClassNam e
定义对象的名称标签。当再次分类,Name 属性可改写成 Key 属性。
作用域操作系统的创建类别名称。
开 OSName
作用域操作系统的名称。
GetOwnerSi d
为该进程的所有者提取安全标识符(SID)。该方法返回一个整数 ,其意义分别如下:
0 - 成功完成; 2 - 用户不具有访问请求信息的权限; 3 - 用户没有足够的特权; 8 - 出现不明错误; 9 - 指定的路径不存在; 21 - 指定的参数无效; 其他 - 关于上面所列以外的整数值,请参阅 Win32 错误代码文档


9

Process类常用属性


属性
说明
多 Caption
对象的简短文字描述(一行字符串)。
线 CommandLine
启动某个特定进程所要用到命令行。

用来创建范例的类别或子类别的名称。当与这个类别
开 CreationClassName 的其它主要属性一起使用时,这个属性允许为这个类

别及其子类别的所有范例作唯一识别。
相关文档
最新文档