【发布时间】:2020-04-30 21:45:44
【问题描述】:
想象一下,我们有两个 .net 应用程序。应用程序“A”使用System.Diagnostics.Process 类启动应用程序“B”。然后“A”想通过方法Process.Kill杀死“B”。
“B”如何确定有人在杀他?
【问题讨论】:
标签: .net kill system.diagnostics
想象一下,我们有两个 .net 应用程序。应用程序“A”使用System.Diagnostics.Process 类启动应用程序“B”。然后“A”想通过方法Process.Kill杀死“B”。
“B”如何确定有人在杀他?
【问题讨论】:
标签: .net kill system.diagnostics
我认为应用程序不可能响应被杀死...我认为它更多地在操作系统级别运行,就像使用任务管理器时一样。
在这种情况下使用 Process.Kill() 可能不正确,您能否提供有关您要解决的问题的更多信息?
【讨论】:
也许您可以在流程 B 的代码中尝试这种方式...
// 我们在进程 B.... System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess(); proc.EnableRaisingEvents = true; proc.Exited += new EventHandler(proc_Exited); 静态无效 proc_Exited(对象发送者,EventArgs e) { // 在这里处理我们被杀... }我不能自信地说这会奏效...向进程发送“Kill”的操作系统的本质是依赖于实现的,因此,进程 B 无法保证万无一失的方式知道这一点它正在被杀死。正如您没有明确说明进程 B 是否是托管/非托管进程,我将假设它确实是托管的,因为标签是“.net”,如果它是 WinForm 应用程序,可能是 Closing 事件在 winForms 中将在该事件处理程序的参数中有一个原因或使用如下所示的 ApplicationDomain 实例:
希望这会有所帮助, 此致, 汤姆。
【讨论】: