在应用程序进程死亡/崩溃时终止subprocess

我从我的应用程序创build新的进程,并希望这些进程被杀害时/如果我的应用程序崩溃。

所以我发现这个post: 杀死父进程时,subprocess 。 我拿了第一个例子,并将所有代码复制到一个函数public void Close()下的新类。

得到了一个错误 – 名称Win32不存在于当前的上下文中,所以我添加了Microsoft.Win32 ,现在另一个错误 – CloseHandle无法识别。

名称空间“Microsoft.Win32”中不存在types或名称空间名称“CloseHandle”(是否缺less程序集引用?

我该如何解决它?

一个更简单的方法 – 或者我相信

跟踪你开始的所有流程。

 ArrayList chilProcess_id = new ArrayList(); public void process_starter() { Process p; p = new System.Diagnostics.Process(); p.StartInfo.FileName = "YOUR PROCESS PATH"; if (!p.Start()) chilProcess_id.Add(p.Id); } 

现在退出之前,杀死这些进程。

 public void exitApplication() { Process p; foreach (int p_id in chilProcess_id) { p = Process.GetProcessById(p_id); try { if(!p.HasExited) p.Kill(); } catch (Exception e) { //Handle the exception as you wish } } } 

为ArrayList添加命名空间

 using System.Collections; 

为进程添加命名空间

 using System.Diagnostics;