我有启动进程 B 的进程 A。
他们以WCF(IAsyncResult APM模式)进行通信,A是客户端B是服务。
当进程 A 终止时,我需要关闭 B。
我将进程 A id 作为 arg 发送给进程 b,他执行了以下操作:
Process.GetProcessById(processId).WaitForExit();
这工作正常。
我的问题是如果进程a死掉了如何正确杀死进程b?
我尝试了以下所有方法:
Process.GetCurrentProcess().Close();
Process.GetCurrentProcess().Dispose();
Application.Exit(); > its a guiless winform application
唯一有效的是:
Process.GetCurrentProcess().Kill();
但杀人的过程是不是太残酷了?
添加代码:
main 中的进程 B:
TrackExternalProcess(externalProcessId, () => { OnExternalProcessClosed(); });
公共方法:
public static void TrackExternalProcess(int processId, Action onExternalProcessClosed)
{
new Thread(new ThreadStart(delegate
{
try
{
Thread.CurrentThread.IsBackground = true;
Process.GetProcessById(processId).WaitForExit();
logger.Error("Host process quit unexpectedly");
onExternalProcessClosed();
}
catch (Exception)
{
}
})).Start();
}
public static void OnExternalProcessClosed()
{
Process.GetCurrentProcess().Kill();
}
Isn't Environment.Exit()
清洁工 ?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)