想象一下,我们有两个.net应用程序。应用程序“A”使用System.Diagnostics.Process
类启动应用程序“B”。然后“A”想通过方法Process.Kill
杀死“B”。
“B”怎么能确定有人杀了他?
答案 0 :(得分:0)
我认为应用程序无法响应被杀...我认为它在操作系统级别运行时更像是在使用任务管理器时。
在此上下文中使用Process.Kill()可能不正确,您是否可以提供有关您尝试解决的问题的更多信息?
答案 1 :(得分:0)
也许你可以在Process B的代码中以这种方式尝试......
// We're in Process B.... System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess(); proc.EnableRaisingEvents = true; proc.Exited += new EventHandler(proc_Exited); static void proc_Exited(object sender, EventArgs e) { // Handle here that we got killed... }
我无法自信地说这会起作用......向流程发送“杀戮”的操作系统的本质是依赖于实现的,因此,流程B无法保证万无一失的方式知道它被杀了。由于你没有明确说明进程B是一个托管/非托管进程,我将假设它确实被管理,因为标签是'.net',如果它是一个WinForm应用程序,也许是{{1} winForms中的事件将在该事件处理程序的参数中有一个原因或使用ApplicationDomain实例,如下所示:
AppDomain thisDom = AppDomain.CurrentDomain; thisDom.ProcessExit += new EventHandler(thisDom_ProcessExit); // static void thisDom_ProcessExit(object sender, EventArgs e) { // Handle the situation here where the AppDomain is going to be unloaded and killed! }
希望这有帮助, 最好的祝福, 汤姆。