1、背景

static变量

  • static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
  • static成员变量的初始化顺序按照定义的顺序进行初始化。

static方法

  • 一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
  • 但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

2、操作:

public class jinCheng
{
    static Process p;
    static void RunPythonScript(string Arguments)
    {
        p = new Process();
        string path = @"F:\hand\leapmotion_gestures-0.3\leapmotion_gestures-0.3\" + sArgName;
        p.StartInfo.FileName = @"D:\Python\python.exe";
        p.StartInfo.Arguments = path;
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.UseShellExecute = false;
        p.Start();      
    }
    //kill掉一个进程
    private void OnApplicationQuit()
    {
        if(p != null)
        {
            p.Kill();
            Console.WriteLine("进程关闭成功!");
            
        }
    }
}

3、原理:

Process.Kill 方法:

  • 命名空间:System.Diagnostics程序集:System.Diagnostics.Process.dll
  • Kill方法强制终止进程。
  • Kill方法以异步方式执行。 调用方法后 Kill ,调用 WaitForExit 方法以等待进程退出,或检查 HasExited 属性以确定进程是否已退出。
  • 如果调用,则由进程编辑的数据或分配给进程的资源可能会丢失 KillKill 导致异常的进程终止,只应在必要时使用。 CloseMainWindow 启用进程的有序终止,并关闭所有窗口,因此更适合使用接口的应用程序。 如果 CloseMainWindow 失败,可使用 Kill 终止进程。 Kill 是终止没有图形界面的进程的唯一方法。

例外

  • Win32Exception
  • 无法终止相关联的进程。
  • NotSupportedException
  • 你正尝试为远程计算机上运行的进程调用 Kill()。 该方法仅对本地计算机上运行的进程可用。
  • InvalidOperationException
  • 没有与此 Process 对象关联的进程。

本文地址:https://blog.csdn.net/qq_41924554/article/details/109964122