В основном дочерний процесс работает бесконечно, пока не будет убит в фоновом режиме, и я хочу очистить его, когда моя программа завершается по любой причине, то есть через диспетчер задач.
В настоящее время у меня есть цикл while (Process.GetProcessesByName ("ParentProcess"). Count ()> 0) и выхожу, если родительский процесс не запущен, но он кажется довольно хрупким, и если бы я хотел, чтобы он работал в отладчике в Visual Studio мне нужно было бы добавить "ParentProcess.vshost" или что-то в этом роде.
Есть ли способ убедиться, что дочерний процесс завершается, не требуя, чтобы дочерний процесс знал о родительском процессе? Я бы предпочел решение в управляемом коде, но если его нет, я могу PInvoke.
Изменить: передача PID кажется более надежным решением, но из любопытства, что, если дочерний процесс был не моим кодом, а каким-то exe, над которым я не могу контролировать? Есть ли способ защититься от возможного создания потерянных дочерних процессов?