Может быть, вы могли бы попробовать это так в коде Процесса 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...
}
Я не могу с уверенностью сказать, что это будет работать ... сама природа ОС, которая посылает 'Kill' в процесс, зависит от реализации, и, как таковой, нет гарантированного надежного способа Процесса B, зная, что это убивают. Поскольку вы не указали явно, если процесс B является управляемым / неуправляемым процессом, я буду основывать предположение, что он действительно управляется, так как тег является «.net». Если это приложение WinForm, возможно, событие Closing
в пределах 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!
}
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.