Como encerrar processos filho quando o processo pai terminou em C #

Tarefa: Eliminar automaticamente todos os processos filhos se o processo pai terminar. Os processos pai podem ser encerrados não apenas da maneira correta, mas também matando no ProcessExplorer, por exemplo. Como eu posso fazer isso?

Pergunta semelhante emС topic conselhos para usar objetos de trabalho. Como usá-lo em C # sem exportar DLL externa?

Eu tentei usar objetos de trabalho. Mas esse código não funciona corretamente:

  var job = PInvoke.CreateJobObject(null, null);
  var jobli = new PInvoke.JOBOBJECT_BASIC_LIMIT_INFORMATION();

  jobli.LimitFlags = PInvoke.LimitFlags.JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
                   | PInvoke.LimitFlags.JOB_OBJECT_LIMIT_PRIORITY_CLASS
                   | PInvoke.LimitFlags.JOB_OBJECT_LIMIT_JOB_TIME
                   | PInvoke.LimitFlags.JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION
                   | PInvoke.LimitFlags.JOB_OBJECT_LIMIT_JOB_MEMORY;

  var res = PInvoke.SetInformationJobObject(job, PInvoke.JOBOBJECTINFOCLASS.JobObjectBasicLimitInformation, jobli, 48);

  if (!res)
  {
    int b = PInvoke.GetLastError();
    Console.WriteLine("Error " + b);
  }

  var Prc = Process.Start(...);

  PInvoke.AssignProcessToJobObject(job, Prc.Handle);

PInvoke.SetInformationJobObject retorna com erro. GetLastError retorna o erro 24. No entanto, PInvoke.AssignProcessToJobObject funciona e o processo filho foi adicionado à fila de tarefas (posso vê-lo no ProcessExplorer). Mas, porque PInvoke.SetInformationJobObject não funciona - o processo gerado permanece vivo quando eu mato o pai.

O que eu tenho incorreto neste código?

questionAnswers(5)

yourAnswerToTheQuestion