基本概念
进程:
- 进程是操作系统级别的一个基本概念,可以将其简单地理解为“正在运行的程序”。
- 进程是资源调度和分配的基本单位。
- 进程之间是相互独立的。
- 在操作系统级别的管理中,利用Process类可启动、停止本机或远程进程。
线程:
- 从程序实现的角度来讲,将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线程。
- 从硬件实现的角度来讲,可将线程看作是操作系统分配处理器时间的基本执行单元(CPU调度和分配的基本单位)。
- 一个进程中既可以只包含一个线程,也可以同时包含多个线程。
- 线程共享进程的资源
一个车间相当于一个进程,车间内的工人相当于线程
并发执行:
- 宏观上并行,微观上串行。
异步执行:
- 各个线程之间执行时各自运行,无前后关系,无相互等待,执行先后不可知。
进程管理(Process类)
Process类位于System.Diagnostics命名空间下。
对本机:
- 可以启动,终止某个进程
- 可以查看进程相关信息
- 可以查看进程工作状态
对远程计算机:
- 可以查看远程计算机相关信息
- 无法直接启动、终止远程计算机
启动进程
启动进程涉及的方法和属性
- Start方法:启动进程资源并将其与Process组件关联
- StartInfo属性:获取或设置要传递给启动进程的文件名以及启动参数
启动进程涉及的两种方法:
-
先创建Process类的一个实例,并通过StartInfo属性指定要运行的应用程序名称以及传递的参数,然后调用该实例的Start方法启动该进程。此外,如果进程带有图形用户界面,还可以用ProcessWindowStyle枚举指定启动进程时如何显示窗口。可选的枚举值有:Normal(正常窗口),Hidden(隐藏窗口),Minimized(最小化窗口)和Maximized(最大化窗口)。
举例:
-
直接调用Process类提供的Start静态方法启动进程。
举例:Process.Start(“Notpad.exe”);
停止进程
Process类提供的相关方法和属性
-
Kill方法和CloseMainWindow方法,前者用于强行终止进程,后者只是“请求”终止进程。
-
HasExited属性,用于判断启动的进程是否已停止运行。
-
WaitForInputIdle方法,仅适用于具有用户界面的进程,它可以使Process等待关联进程进入空闲状态。
-
WaitForExit方法,设置等待关联进程退出的时间。
-
ExitCode属性和ExitTime属性,ExitCode属性用于获取关联进程终止时指定的值 ,“0”成功,非“0”错误。
ExitTime属性用于获取关联进程退出的时间。
以上两属性只有在HasExited属性为true时才能检测。 -
EnableRaisingEvents属性,用于获取或设置在进程终止时是否应引发Exited事件。(当关联进程终止时引发Exited事件则为true,否则为false)
停止进程的两种方法
-
CloseMainWindow + Close(释放资源): 有图形界面