进程和线程概念都比较简单,博客园上面已经有很多文章了;但还是学习巩固哈;加上一些例子;
进程
进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。也可以表述为:正在执行的程序称为进程。 与进程相关的信息包括:进程标示(进程)、文件名、执行的程序和数据,运行时间、在存储器中的位置、占用的内存容量等。
进程管理(Process类)
1、Process类位于System.Diagnostics命名空间下。
2、对本机(也叫本地计算机)
(1)可以启动、终止某个进程
(2)可以查看进程相关信息,如CPU利用率等
(3)可以查看进程工作状态
3、对远程计算机
(1)可以查看远程计算机相关信息
(2)无法直接启动、终止远程计算机
4、在一个程序中处理其他的程序(例如调用其他.exe文件、 快捷方式等),实际上就是对进程进行管理。
Process类常用的属性和方法
-----------------------获取进程实例-------------------
GetProcessById方法(静态方法):
通过进程Id创建新的Process组件,并将其与本地计算机上的进程资源关联。 GetProcessById最多只有一个Process实例。
GetProcesses方法(静态方法):
获取本机所有进程 GetProcessesByName方法(静态方法):获取本机上特定名称的进程
-----------------------获取及设置优先级---------------
BasePriority属性: 获取进程优先级(只读) PriorityClass 属性:设置或更改进程优先级
---------------------------进程ID及进程名-----------------------
Id属性:获取关联进程的唯一标识符
ProcessName属性:获取该进程的名称,不包括路径和扩展名
---------------------------进程其他信息-------------------------
MachineName属性:获取关联进程正在其上运行的计算机名称
MainModule属性:获取关联进程的主模块
Modules属性:获取由关联进程加载的模块
TotalProcessorTime属性:获取进程的总的处理器时间
StartTime属性:获取关联进程的启动时间
WorkingSet64属性:为进程分配的物理内存量(字节数)
-----------------------进程启动-------------------------
Start方法:启动进程资源并将其与Process组件关联
StartInfo属性:获取或设置要传递给启动进程的文件名以及启动参数
-----------------------进程终止-------------------------
Kill方法:强制终止进程
CloseMainWindow方法:关闭具有用户界面的进程
Close方法:释放与此组件关联的所有资源
HasExited属性:指示关联进程是否已终止
WaitForExit方法:设置等待关联进程退出的时间,并在该段时间结束前或该进程退出前,阻止当前线程执行。
获取进程信息
1、如何获取进程信息
(1)获取本地计算机的所有进程:
Process[] myProcesses = Process.GetProcesses();
(2)获取本地计算机上指定名称的进程:
Process[] myProcesses = Process.GetProcessesByName("进程名称");
注意:
(a)进程名称不带扩展名。
(b)可以是任何一个可执行文件
例如:
Process[] myProcesses = Process.GetProcessesByName (“WindowApplication1");
(3)获取远程计算机的所有进程:
Process[] myProcesses = Process.GetProcesses (remoteMachineName);
例如:
Process[] myProcesses = Process.GetProcesses ("192.168.0.1");
(4)获取远程计算机上指定名称的进程:
Process[] myProcesses = Process.GetProcessesByName( "远程进程名称",remoteMachineName);
启动和停止进程
1. 启动进程:
方法1:
(1)创建一个Process组件的实例,
例如:
Process myProcess = new Process();
(2)设置其对应的StartInfo属性,指定要运行的应用程序名以及传递的参数:
myProcess.StartInfo.FileName = "文件名";
process1.StartInfo.Arguments = "参数";
如果该进程带有图形用户界面,也可以指定图形用户界面的打开方式。
例如:
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
(3)调用该实例的Start方法启动该进程。
方法2: 直接调用Process类提供的静态方法启动进程。
2. 停止进程 通过两种方法利用Process组件停止进程。
(1)如果进程有图形用户界面,调用CloseMainWindow方法。
(2)如果进程没有用户界面,调用进程的Kill方法。 不论有没有图形用户界面,如果希望强行让其退出,在权限允许的情况下,均可以调用Kill方法终止该进程。