Убить дочерний процесс, когда родительский процесс убит - PullRequest
141 голосов
/ 27 июля 2010

Я создаю новые процессы, используя класс System.Diagnostics.Process из моего приложения.

Я хочу, чтобы эти процессы были убиты, когда / если мое приложение потерпело крах. Но если я убью свое приложение из диспетчера задач, дочерние процессы не будут уничтожены.

Есть ли способ сделать дочерние процессы зависимыми от родительского процесса?

Ответы [ 12 ]

1 голос
/ 27 июля 2010

Я вижу два варианта:

  1. Если вы точно знаете, какой дочерний процесс может быть запущен, и уверены, что он запускается только из вашего основного процесса, то вы можете просто выполнить поиск по имении убей их.
  2. Итерация по всем процессам и уничтожение каждого процесса, в котором ваш процесс является родительским (я полагаю, вам сначала нужно уничтожить дочерние процессы). Здесь объясняется, как вы можете получить идентификатор родительского процесса.
0 голосов
/ 07 августа 2013

вызов задания. Дополнительный процесс лучше делать после запуска процесса:

prc.Start();
job.AddProcess(prc.Handle);

При вызове AddProcess до завершения дочерние процессы не уничтожаются. (Windows 7 SP1)

private void KillProcess(Process proc)
{
    var job = new Job();
    job.AddProcess(proc.Handle);
    job.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...