如何检测应用程序是否被杀死?

问题描述 投票:0回答:2

想象一下,我们有两个.net应用程序。应用程序“ A”使用System.Diagnostics.Process类启动应用程序“ B”。然后,“ A”想要通过方法Process.Kill杀死“ B”。“ B”如何确定有人正在杀死他?

.net kill system.diagnostics
2个回答
0
投票

我认为应用程序无法响应被杀死的情况……我认为它像在使用任务管理器时一样,在操作系统级别上运行得更多。

在这种情况下使用Process.Kill()可能不合适,您能否提供有关您要解决的问题的更多信息?


0
投票

也许您可以在流程B的代码中尝试这种方式...

//我们正在处理B ....System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess();proc.EnableRaisingEvents = true;proc.Exited + =新的EventHandler(proc_Exited);静态void proc_Exited(对象发送者,EventArgs e){//在这里处理我们被杀...}

我不能满怀信心地说这将起作用。。。向进程发送“杀人”的操作系统的本质取决于实现,因此,不能肯定地知道进程B的万无一失。被杀。正如您没有明确说明进程B是托管/非托管进程一样,我将基于以下事实进行假设:由于标记是'.net',因此确实对其进行了管理。如果它是WinForm应用程序,则可能是Closing事件在winForms中,事件处理程序的参数中将有一个原因,或者使用ApplicationDomain实例,如下所示:

AppDomain thisDom = AppDomain.CurrentDomain;thisDom.ProcessExit + =新的EventHandler(thisDom_ProcessExit);//静态无效thisDom_ProcessExit(对象发送者,EventArgs e){//处理AppDomain即将被卸载和终止的情况!}

希望这会有所帮助,最好的祝福,汤姆。

© www.soinside.com 2019 - 2024. All rights reserved.