private static void Application_ApplicationExit(object sender, EventArgs e) { KillProcessAndChildren(Thread.CurrentThread.ManagedThreadId); AppLog.Info("Exit Application"); System.Environment.Exit(0); } /// <summary> /// 结束进程和相关的子进程 /// </summary> /// <param name="pid">需要结束的进程ID</param> public static void KillProcessAndChildren(int pid) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid); ManagementObjectCollection moc = searcher.Get(); foreach (ManagementObject mo in moc) { KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"])); } try { Process proc = Process.GetProcessById(pid); Console.WriteLine(pid); proc.Kill(); } catch (ArgumentException) { /* process already exited */ } }
C# 关闭程序的主进程及其子进程
猜你喜欢
转载自www.cnblogs.com/pilgrim/p/12985374.html
今日推荐
周排行