二、进程

  进程和线程概念都比较简单,博客园上面已经有很多文章了;但还是学习巩固哈;加上一些例子;

  进程

  进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。也可以表述为:正在执行的程序称为进程。 与进程相关的信息包括:进程标示(进程)、文件名、执行的程序和数据,运行时间、在存储器中的位置、占用的内存容量等。

进程管理(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方法终止该进程。

  进程demo

原文地址:https://www.cnblogs.com/xchit/p/socket_2.html